Android - 根据每个viewpager recyclelerview激活appbar滚动

时间:2015-07-12 10:45:48

标签: android android-viewpager android-recyclerview android-coordinatorlayout

我有一个ViewPager,其中包含2个包含Recyclerview的标签。 我正在使用支持库22.2.0(AppCompat,Recycler view ...)。 我的viewpager xml最初是:

<android.support.v4.view.ViewPager
   android:id="@+id/viewPager"
   app:layout_behavior="@string/appbar_scrolling_view_behavior"
   android:layout_width="match_parent"
   android:layout_height="match_parent" />

我想基于每个标签/ recyclerview而不是整个viewpager来激活/停用appbar滚动,也就是说, 一个标签/ recyclerview将使appbar滚动,另一个标签/ recyclerview不会。

这个问题是当我删除

app:layout_behavior="@string/appbar_scrolling_view_behavior"
来自viewpager的

默认layout_behavior应用于viewpager,它仍会激活tab / recyclerview上的appbar滚动。

我的策略是在viewpager中停用appbar滚动,可能是这样的:

   <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            app:layout_behavior="@string/appbar_desactivated_behavior"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

仅在我的第一个标签/ recyclerview上激活它。像这样:

<android.support.v7.widget.RecyclerView
    ...
    android:id="@+id/playlist1_rv"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
</android.support.v7.widget.RecyclerView>

但我需要一个类#34; @ string / appbar_desactivated_behavior&#34;。 它存在吗?不是,怎么写呢?或者你考虑另一种策略? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您使用的是ViewPager,则需要在ViewPager上设置appbar_scrolling_view_behavior以进行正确的布局。

您只需关闭RecyclerView中不想滚动应用栏的嵌套滚动:

        recyclerview.setNestedScrollingEnabled(false);

请注意,您可能遇到定位问题,可能需要在recyclerview底部放置一个appbar大小的边距。如果您的用户使用其他Recyclerview向上滚动appbar然后滑动到此recyclerview,则页面底部会有一个空格。