【问题标题】:How to use Recyclerview inside Scrollview [duplicate]如何在 Scrollview 中使用 Recyclerview [重复]
【发布时间】:2016-03-22 17:57:55
【问题描述】:

我正在尝试在 ScrollView

中显示水平 recyclerview 项目和垂直 recyclerview 项目

即使我使用 android:fillViewport="true"

,滚动视图也不起作用
  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    //Horizontal Recyclerview items
    <RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </RecyclerView>
    //vertical Recyclerview items
        <RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"></RecyclerView>
    </LinearLayout>

</ScrollView>

【问题讨论】:

  • 您的布局可以简化。 ParentView 是 RecyclerView(垂直项目),索引 0 处的项目是另一个 RecyclerView(水平项目)。
  • 您应该必须使用一个子滚动视图,而您的 xml 的其他视图将在该子视图中。要使 recyclerView 与滚动视图一起使用,您必须在 xml 中为您的 recyclerview 提供 0dp 高度,并提供您的 recyclerview 在运行时可以采用的最大高度。在垂直 recyclerView 的情况下,您可以通过将总行数 * 一行的高度(以 dp 为单位)相乘来计算最大高度,而在水平方向上,您只能给出一个孩子的高度。就像我们有 10 个 40dp 的 textview,那么垂直 recyclerView 高度将是 10*40 dp = 400dp 和 10dp 水平。
  • 你可以做到...看这里:link
  • 为了将来参考,如果有人在ScrollView 中遇到RecyclerView wrap_content 问题,发生在棉花糖/牛轧糖(API 23、24)设备上,请查看我的解决方法在stackoverflow.com/a/38995399/132121

标签: android android-recyclerview android-scrollview


【解决方案1】:

您应该改用NestedScrollView。但是,您可能需要编写自己的 LayoutManager。查看SO Answer了解更多详情

【讨论】:

  • 感谢您的回复,但该解决方案有问题
【解决方案2】:
  1. 您需要使用自定义布局管理器才能在滚动视图中使用 recyclerview。

  2. 您可以删除滚动视图并在包含水平回收器视图的垂直回收器视图中创建一个标题项。

你也不应该在滚动视图中使用回收视图。所以认为第二种方法会更好。

您也可以使用Snap-RecyclerView-Utils。 它有一个用于滚动视图内的 recyclerview 的线性布局管理器和一个适配器,它可以帮助您制作包含水平 recyclerview 的标题。

【讨论】:

    【解决方案3】:

    ScrollView只能有一个孩子。
    删除您的 RelativeLayout 并重试。

    除了android:layout_height中的ScrollView应该设置为wrap_content

    此外,我不太确定它是否有效,因为在Docs 中指出

    您永远不应该将 ScrollView 与 ListView 一起使用,因为 ListView 负责自己的垂直滚动。最重要的是,这样做会破坏 ListView 中处理大型列表的所有重要优化,因为它有效地强制 ListView 显示其整个项目列表以填充 ScrollView 提供的无限容器。

    也许NestedScrollView 可以工作,因为它是为了

    NestedScrollView 与 ScrollView 类似,但它支持在新旧版本的 Android 上同时充当嵌套滚动父项和子项。默认情况下启用嵌套滚动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多