Android自定义布局管理器,可以垂直和水平滚动,并且首先按垂直方式填充项目

时间:2016-07-04 08:39:37

标签: android android-layout android-recyclerview gridlayoutmanager recyclerview-layout

我正在开发一个Android应用程序。其中一个屏幕有这样的UI: Mockup-UI

这意味着:有很多列,列的宽度也是固定的,所以可能需要水平滚动。每列可能具有不同的项目编号,当垂直滚动时,所有列都将滚动。 所以我不知道如何实现这个UI。我尝试了一个解决方案:在两个scrollview中创建一个大的recyclerview,然后测量它们的大小:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true">

            <HorizontalScrollView
                android:id="@+id/horizontalScrollView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fillViewport="true"
                android:scrollbars="none">
                <LinearLayout
                    android:id="@+id/horizontalContainer"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">

                </LinearLayout>
            </HorizontalScrollView>

        </ScrollView>
</LinearLayout>

但是当recyclerview太大时,视图不会重复使用,测量所有大小的性能非常糟糕。 所以我发现自定义布局管理器可以像这样制作一个回收器视图,但我不知道如何实现,也许是从FixedGridLayoutManager和StaggeredGridLayoutManager混合。

2 个答案:

答案 0 :(得分:0)

您可以尝试https://github.com/lucasr/twoway-view或在此处考虑使用ViewPager。您可以水平滚动,但一次只能滚动。这不会像列表滚动那样平滑,但如果水平列表不太长,您可以尝试。

答案 1 :(得分:0)

请参阅本文,其中包含有关创建自定义LayoutManagers的简短但有价值的建议:http://cases.azoft.com/create-custom-layoutmanager-android/

我建议您还要详细了解不同方向滚动列表的不同自定义选项的一些示例。例如,您可以在这里找到Carousel LayoutManager:https://github.com/Azoft/CarouselLayoutManager

希望它适合你!