【问题标题】:How to make Recyclerview scroll with its parent?如何使 Recyclerview 与其父级一起滚动?
【发布时间】:2016-04-01 15:26:07
【问题描述】:

我在顶部有一个标题,在它下面有一个 recyclerview。像这样:

<LinearLayout> 
    <LinearLayout>
        <ImageView/>
        <TextView/>
        <TextView/>
     </LinearLayout>
    <RecyclerView/>
</LinearLayout>

我还有一个带有标题和两个回收视图的视图。像这样:

<LinearLayout>
     <LinearLayout>
        <ImageView/>
        <TextView/>
        <TextView/>
     </LinearLayout>
     <Recyclerview/>
     <Recyclerview/>
</LinearLayout>

当我在第一个布局上的 recyclerview 上向上滚动时,标题停留在那里。当我向下滚动 recyclerview 时,我希望标题向上和离开视图。

在第二种布局中,每个列表都很短,可以单独显示在屏幕上,但第二个列表一起出现在屏幕外(i'm using this layout manager to make the layout wrap content)。这很好,但是当您在第一个 recyclerview 上向上滚动时,它只会尝试滚动自身(这是不能滚动的,因为没有可滚动的内容),因此您无法滚动查看屏幕外的内容。您也不能在标题上滚动以离开屏幕。

在这两种情况下,如何让 recyclerview 与其父级一起滚动?

【问题讨论】:

  • 简短回答:您不应该让 RecyclerView 与其父级一起滚动。第二个可以通过将两个recyclerView合并为一个来修复(一个RecyclerView可以显示多个不同的viewType,所以应该没问题)
  • 所以每个包含线性recyclerview + 其他视图的屏幕都只包含那个recyclerview,它由您想使用不同视图类型放在该屏幕上的所有视图组成?这是做事的唯一方法吗? @KonstantinLoginov
  • 当然,有多种处理方式。 :-) 还有一些反模式,比如在 ListView 中禁用 Scroll 并将其放入 ScrollView (由于内存使用情况很糟糕 - 它不是回收视图)。一般来说,我会说,根据指南应该有 1 个控件,它在页面上具有垂直滚动。 Android 也有 CoordinatorLayout&CollapsingToolbarLayout 用于动画折叠标题。它可能适用于您的第一个问题(在此处阅读更多 antonioleiva.com/collapsing-toolbar-layout
  • @KonstantinLoginov 感谢您的建议和链接!这正是我所需要的。
  • 太棒了!然后,如果您不介意-我会将评论转换为实际答案:-)

标签: java android android-linearlayout android-recyclerview


【解决方案1】:

在第一种情况下,您可以使用CollapsingToolBarLayout。 有很多关于它的不错的教程/示例:

在第二种情况下,我建议用不同的视图类型将 2 RecyclerViews 替换为 1,以便在滚动期间保持视图循环。

【讨论】:

    【解决方案2】:
    <NestedScrollView>
     ...your views here...
     <RecyclerView
       android:NestedScrollViewEnabled="false"/>
    </NestedScrollView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多