2

我有一个ViewPager里面Activity显示两个Fragments

该活动有一个TabLayout和一个CollapsingToolbarLayoutCollapsingToolbarLayout嵌套在 中以AppBarLayout产生ImageView视差效果。TabLayout是外内AppBarLayoutLinearLayoutViewPager。然后当用户单击一个按钮来显示那个时,还有一个FrameLayout显示另一个。FragmentViewPagerFragment

问题是,当您滚动覆盖在其顶部的内部RecyclerView时,也会滚动并产生视差效果。本质上,它同时滚动内部和内部的内容。FragmentViewPagerActivityRecyclerViewFragmentViewPager

有没有办法在用户看到时停止滚动CollapsingToolbarLayout并且只滚动覆盖层中的内容?FragmentFragment

这就是我的 XML 层次结构的样子:

<android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.AppBarLayout>

    <android.support.design.widget.CollapsingToolbarLayout
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            app:layout_collapseMode="parallax"/>

        <android.support.v7.widget.Toolbar />

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

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

<LinearLayout
    app:layout_behavior="@string/appbar_scrolling_view_behavior" >

    <android.support.design.widget.TabLayout />
    <!-- Two fragments inside ViewPager each containing a RecyclerView -->
    <android.support.v4.view.ViewPager />

</LinearLayout>

<!-- User Clicks a button and fragment is added to this framelayout -->
<!-- This fragment overlays on top of the entire Activity layout -->
<!-- This fragment also contains a recyclerview -->
<FrameLayout/>


</android.support.design.widget.CoordinatorLayout>
4

2 回答 2

12

和通过子级回调CoordinatorLayout进行操作。如果你有一个滚动的孩子,你可以通过禁用这个回调来阻止它影响它的父母:AppBarLayoutonNestedScroll

recyclerView.setNestedScrollingEnabled(false);
于 2015-08-22T18:53:11.973 回答
-4

尝试使用嵌套滚动视图而不是线性布局。

于 2015-08-11T15:28:53.773 回答