我有一个 ViewPager
在 Activity
里面显示两个 Fragments
.
Activity 有一个 TabLayout
和一个 CollapsingToolbarLayout
. CollapsingToolbarLayout
嵌套在 AppBarLayout
中用ImageView
产生视差效果。 TabLayout
在AppBarLayout
之外在 LinearLayout
里面与 ViewPager
.然后有一个FrameLayout
以及显示另一个Fragment
在ViewPager
当用户单击按钮时显示 Fragment
.
问题是当您滚动 RecyclerView
时在Fragment
里面覆盖在 ViewPager
之上Activity
也滚动并产生视差效果。本质上它同时滚动 RecyclerView
在Fragment
里面以及 ViewPager
中的内容
有没有办法停止滚动 CollapsingToolbarLayout
并且只滚动覆盖层中的内容 Fragment
当用户看到 Fragment
?
这是我的 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>
最佳答案
CoordinatorLayout
和 AppBarLayout
通过子级的 onNestedScroll
回调操作。如果你有一个滚动的 child ,你可以通过禁用这个回调来阻止它影响它的 parent :
recyclerView.setNestedScrollingEnabled(false);
关于android - 显示 fragment 时停止滚动 CollapsingToolbarLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302386/