android - 显示 fragment 时停止滚动 CollapsingToolbarLayout

标签 android android-fragments android-viewpager android-collapsingtoolbarlayout

我有一个 ViewPagerActivity 里面显示两个 Fragments .

Activity 有一个 TabLayout和一个 CollapsingToolbarLayout . CollapsingToolbarLayout嵌套在 AppBarLayout 中用ImageView产生视差效果。 TabLayoutAppBarLayout之外在 LinearLayout 里面与 ViewPager .然后有一个FrameLayout以及显示另一个FragmentViewPager当用户单击按钮时显示 Fragment .

问题是当您滚动 RecyclerView 时在Fragment里面覆盖在 ViewPager 之上Activity也滚动并产生视差效果。本质上它同时滚动 RecyclerViewFragment里面以及 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>

最佳答案

CoordinatorLayoutAppBarLayout 通过子级的 onNestedScroll 回调操作。如果你有一个滚动的 child ,你可以通过禁用这个回调来阻止它影响它的 parent :

recyclerView.setNestedScrollingEnabled(false);

关于android - 显示 fragment 时停止滚动 CollapsingToolbarLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302386/

相关文章:

android - com.android.phone 进程意外停止。请再试一次

android - 什么时候应该在 FragmentTransaction 上调用 setReorderingAllowed()?

android - 如何在 android 的 PagerAdapter 中不重复对象 instantiateItem()

android-viewpager - ActionbarSherlock 和 ViewpagerIndicator : how to add different actionbar menu to different Page in ViewPagerIndicator using fragment

Android开发图库路径

java - 无法访问 Android 的 Java Keystore

android.database.sqlite.SQLiteException : table has no column named (code 1)

java - 方法不会覆盖其父类(super class)中的方法

java - Android - fragment 中 TabLayout 的中间选项卡错误

android - ViewPager 中嵌套 fragment 的 OptionsMenu