使用带有recyclerview的协调器布局时滚动卡顿

时间:2018-02-20 13:21:46

标签: android android-recyclerview android-coordinatorlayout android-collapsingtoolbarlayout

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

为了重现这一点,你必须大力向下滚动,当它仍在发生时尝试向上滚动项目列表 - 可以看到一种不稳定的口吃效果,好像CoordinatorLayout试图滚动视图在与儿童(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)

2 个答案:

答案 0 :(得分:1)

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

recyclerView.setNestedScrollingEnabled(false);

  

由于viewpager的app:layout_behavior="@string/appbar_scrolling_view_behavior"行为,这种情况正在发生.. 这导致了nestedScrolling ..这就是为什么你会感到不稳定的效果..

答案 1 :(得分:1)

将此行添加到RecyclerView

<div>You can select this text...</div>
<div class="no-select">...but not this text</div>