创建具有水平和垂直滚动的 RecyclerView
Posted
技术标签:
【中文标题】创建具有水平和垂直滚动的 RecyclerView【英文标题】:Create a RecyclerView with both horizontal and vertical scrolling 【发布时间】:2016-07-24 07:49:24 【问题描述】:在过去的几周里,我一直在学习使用RecyclerView
。我需要实现一个水平列表,即通过将设备置于横向模式,如下所示:
我找到了最好的解决方案(如何创建RecyclerView
,here的水平位移),但遇到了另一个问题。 RecyclerView
的项目大于设备的高度(横向,水平),所以我需要同时创建垂直和水平位移。
我查看了LayoutManager
类的android Developer 方法,但我的技能还不够高,无法理解大多数方法。我还尝试将 RecyclerView
垂直放置在另一个 RecyclerView
中,并将所有内容水平放置,但出现错误:
IllegalStateException: RecyclerView 没有 LayoutManager
为了解决这个问题,我从 XML 文件中删除了所有 <View ... />
元素,但这并没有给出任何结果。
澄清我在问什么:是否可以让我的布局水平和垂直滚动,如果你能解释一下我会如何感激。
【问题讨论】:
二维画廊怎么样:***.com/questions/3754445/… 【参考方案1】:对于没有考虑最简单解决方案的应用程序出现的所有问题,我感到非常生气。
RecyclerView
由两个 XML 文件组成,一个声明 RecyclerView 的主要文件,另一个包含内容。
最简单的解决方案是在ScrollView
中引入RecyclerView
。因此,感谢ScrollView
,我可以一次移动所有项目,感谢RecyclerView
,我可以在横向模式下移动项目。
activity_main.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_margin="@dimen/cardIn_margin_ext">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_
android:layout_
android:scrollbarStyle="outsideInset"
android:scrollbars="horizontal" />
</ScrollView>
【讨论】:
简单而天才! 如果父级是滚动视图,则子级也不能是滚动视图。这会导致呈现歧义。 Niiice 试图给 android OS 带来麻烦 恭喜您的解决方案!但是,如果您想同时进行大量垂直和水平滚动,则需要 RecyclerView 来处理两个方向(例如在我的情况下,某种电子表格)。有没有人有一个实际上只使用 RecyclerViews 的解决方案? 我们需要添加 NestedScrollView 而不是 Scrollview 这不起作用..您必须为此使用 FixedGridLayoutManager。【参考方案2】:接受的答案对我不起作用。我不得不使用 HorizontalScrollView 而不是简单的 ScrollView。
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_margin="@dimen/cardIn_margin_ext">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_
android:layout_
android:scrollbarStyle="outsideInset"
android:scrollbars="horizontal" />
</HorizontalScrollView >
【讨论】:
以上是关于创建具有水平和垂直滚动的 RecyclerView的主要内容,如果未能解决你的问题,请参考以下文章
Android 布局:具有滚动行为的 Viewpager 内的垂直 Recyclerview 内的水平 Recyclerview