显示片段时停止滚动 CollapsingToolbarLayout
Stop Scrolling for CollapsingToolbarLayout when showing a Fragment
我在 Activity
中有一个 ViewPager
,它显示两个 Fragments
。
activity 有一个 TabLayout
和一个 CollapsingToolbarLayout
。 CollapsingToolbarLayout
与 ImageView
嵌套在 AppBarLayout
内以产生视差效果。 TabLayout
在 AppBarLayout
外面,在 LinearLayout
和 ViewPager
里面。然后还有一个 FrameLayout
以及在 ViewPager
上显示另一个 Fragment
当用户单击一个按钮以显示 Fragment
.
问题是,当您在 Fragment
内滚动覆盖在 ViewPager
之上的 RecyclerView
时,Activity
也会滚动并产生视差效果。本质上它会滚动 Fragment
内的 RecyclerView
和 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
通过来自 children 的 onNestedScroll
回调操作。如果您有滚动 child,您可以通过禁用此回调来阻止它影响其 parent/s:
recyclerView.setNestedScrollingEnabled(false);
我在 Activity
中有一个 ViewPager
,它显示两个 Fragments
。
activity 有一个 TabLayout
和一个 CollapsingToolbarLayout
。 CollapsingToolbarLayout
与 ImageView
嵌套在 AppBarLayout
内以产生视差效果。 TabLayout
在 AppBarLayout
外面,在 LinearLayout
和 ViewPager
里面。然后还有一个 FrameLayout
以及在 ViewPager
上显示另一个 Fragment
当用户单击一个按钮以显示 Fragment
.
问题是,当您在 Fragment
内滚动覆盖在 ViewPager
之上的 RecyclerView
时,Activity
也会滚动并产生视差效果。本质上它会滚动 Fragment
内的 RecyclerView
和 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
通过来自 children 的 onNestedScroll
回调操作。如果您有滚动 child,您可以通过禁用此回调来阻止它影响其 parent/s:
recyclerView.setNestedScrollingEnabled(false);