创建具有水平和垂直滚动的 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】:

接受的答案对我不起作用。我不得不使用 Horizo​​ntalScrollView 而不是简单的 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

如何修复垂直 RecyclerView 内的水平 ViewPager2 和 RecyclerView 的滚动问题?

具有水平滚动的嵌套 RecyclerView 中的滚动行为

同一滚动下的水平和垂直RecyclerView

在水平和垂直Recyclerview中滚动问题

嵌套在 BottomSheet 中的 RecyclerView(水平)防止垂直滚动