RecyclerView Laggy внутри NestedScrollView / LinearLayout - PullRequest
0 голосов
/ 04 июля 2018

Прежде чем копаться в коде, я уже проверил следующие вопросы:

  1. Как использовать RecyclerView внутри NestedScrollView?
  2. Recyclerview внутри прокрутки Nested Scrollview, но не быстрая прокрутка, как при обычном Recyclerview или Nested Scrollview
  3. RecyclerView внутри ScrollView / NestedScrollView не прокручивается должным образом

Ни один из вышеупомянутых вопросов не работал со мной. RecyclerView слишком запаздывает при прокрутке.

У меня есть NestedScrollview и LinearLayout в качестве основного макета для NestedScrollview. Код макета:

<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:fbutton="http://schemas.android.com/apk/res-auto"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    >

<android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/frag_misc_rv_margin_top"
        android:scrollbars="none"
        android:nestedScrollingEnabled="false"
        android:id="@+id/frag_showcase_promotion_recyclerview"/>

    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

Код:

mPromotionsRv.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false));
mPromotionsRv.setNestedScrollingEnabled(false);
mPromotionsAdapter = new ShowcasePromotionRvAdapter(getActivity(), mPromotionsItems);
mPromotionsAdapter.setOnItemClickListener(new ShowcasePromotionListener() {
        @Override
        public void onClick(View view, int position) {
            ItemPromotion mPromotion = mPromotionsItems.get(position);
            try{
                recordPromotionClick(mPromotion.getId());
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse(mPromotion.getPromotion_link())));
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    });

    mPromotionsRv.setAdapter(mPromotionsAdapter);
    SnapHelper snapHelperStart = new GravitySnapHelper(Gravity.START);
    snapHelperStart.attachToRecyclerView(mPromotionsRv);


    RecyclerView.ItemAnimator animator = mPromotionsRv.getItemAnimator();
    if (animator instanceof SimpleItemAnimator) { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); }

1 Ответ

0 голосов
/ 04 июля 2018

Поскольку ваш RecyclerView горизонтальный, попробуйте сделать ширину вашего RecyclerView "wrap_content".

...