将协调器布局与 recyclerview 一起使用时滚动卡顿

Scroll stuttering while using coordinator layout with recyclerview

我在 CoordinatorlayoutViewPager 实施方面遇到问题。

为了重现这一点,您必须大力向下滚动,当它仍在发生时尝试向上滚动项目列表 - 可以看到一种摇晃的停顿效果,就好像 CoordinatorLayout 试图单独滚动视图一样方向比它的 child (RecyclerView).

你可以在这里查看我的布局:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <FrameLayout
            android:id="@+id/headerContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </android.support.design.widget.CollapsingToolbarLayout>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabControl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabIndicatorHeight="4dp"
        app:tabMaxWidth="500dp">

    </android.support.design.widget.TabLayout>

    <LinearLayout
        android:id="@+id/topLayout"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:orientation="vertical"
        android:visibility="gone" />
</android.support.design.widget.AppBarLayout>


<android.support.v4.view.ViewPager
    android:id="@+id/tabContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

只是为了提供一些进一步的细节:

headerContainer 包含 ConstraintLayout 以及一些内容,例如一堆文本视图、按钮 - 非常普通。

tabContainer 包含 LinearLayout 和项目列表 (recyclerview)

将其添加到 ViewPager 片段中的 recyclerView 中..

recyclerView.setNestedScrollingEnabled(false);

This is happening because of the app:layout_behavior="@string/appbar_scrolling_view_behavior" behavior of the viewpager.. this is causing the nestedScrolling.. that is why you feel the shaky effect..

将此行添加到您的 RecyclerView

Recyclerview.setNestedScrollingEnabled(false);