【问题标题】:Scrollable Recycler view and view pager可滚动的回收器视图和视图寻呼机
【发布时间】:2018-02-03 14:31:20
【问题描述】:

我有一个屏幕,我需要在顶部显示一个工具栏,在工具栏下方显示一个幻灯片,在幻灯片下方显示一个 recyclerview。 为了显示幻灯片,我使用了水平滑动图像的 viewPager。

我目前面临的问题是,当 recyclerview 滚动时,viewPager 需要随之滚动,并且工具栏应该保持固定状态。

我尝试将 viewPager 和 recyclerview 放在嵌套的 Scroll 中,但是由于嵌套的滚动需要一个子项,我不得不将 viewpager 和 recyclerview 都放在线性布局中,因为 recyclerview 的滚动行为需要折腾(我正在监视 recyclerview 滚动,因此当它到达底部时我可以加载更多结果)。

【问题讨论】:

    标签: android android-recyclerview android-viewpager android-toolbar android-nestedscrollview


    【解决方案1】:

    您可以通过使用CoordinatorLayoutAppBarLayoutCollapsingToolbarLayout 来解决此问题。您将ToolbarViewPager 放在CollapsingToolbarLayout 中,并使用RecyclerView 作为AppBarLayout 的滚动兄弟,以便它可以正确折叠ViewPager

    这是我用来实现我认为您所描述的内容的一些示例 XML:

    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
                <android.support.v4.view.ViewPager
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:layout_marginTop="?attr/actionBarSize"/>
    
                <android.support.v7.widget.Toolbar
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_collapseMode="pin"/>
    
            </android.support.design.widget.CollapsingToolbarLayout>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            app:layoutManager="LinearLayoutManager"/>
    
    </android.support.design.widget.CoordinatorLayout>
    

    唯一棘手的一点是&lt;Toolbar&gt; 标记必须在&lt;ViewPager&gt; 标记之后,因为它们都位于派生自FrameLayout 的视图中。通常,这意味着工具栏会遮挡 viewpager 的顶部,但 viewpager 的 marginTop 属性会阻止这种情况发生。

    【讨论】:

    • 感谢 Ben P. 实际上提供了一点帮助,现在 viewpager 滚动但问题是当回收器视图滚动时 AppBarLayout 不会折叠或展开,我需要单独滚动到 AppBarLayout为了发生这种行为,我正在使用 github.com/mikepenz/FastAdapter 和 EndlessScroll 侦听器作为回收器视图适配器,这会导致问题吗?
    • @JudeFernandes 只是为了确保您的 recyclerview 上有 app:layout_behavior="@string/appbar_scrolling_view_behavior" 属性吗?
    • 是的,它现在可以工作了,有残留的代码 sn-ps 导致了这个问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多