Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 交错布局,每行对象动态排列,换行_Android_Android Layout_Android Recyclerview - Fatal编程技术网

Android 交错布局,每行对象动态排列,换行

Android 交错布局,每行对象动态排列,换行,android,android-layout,android-recyclerview,Android,Android Layout,Android Recyclerview,我正在寻找一种在UI中显示可变宽度的图像/图标列表并启用换行功能的方法,这样每行可以有可变数量的对象。对象列表是动态的,源于数据库。我目前使用的是交错布局,但其局限性如下: 要求每行列的跨度一致。我知道我可以用编程的方式设置,但我需要以某种方式测量每个对象,这是我不想做的,因为还有其他限制,如下面的2 即使列数可变,gridLayout也会拉伸每一行以填充最大宽度,从而在每个对象之间创建难看的间距。 请看下面我的截图 我是不是错过了什么重要的东西?也许我应该使用一个完全不同的构造,就像一个表,但

我正在寻找一种在UI中显示可变宽度的图像/图标列表并启用换行功能的方法,这样每行可以有可变数量的对象。对象列表是动态的,源于数据库。我目前使用的是交错布局,但其局限性如下:

要求每行列的跨度一致。我知道我可以用编程的方式设置,但我需要以某种方式测量每个对象,这是我不想做的,因为还有其他限制,如下面的2 即使列数可变,gridLayout也会拉伸每一行以填充最大宽度,从而在每个对象之间创建难看的间距。 请看下面我的截图

我是不是错过了什么重要的东西?也许我应该使用一个完全不同的构造,就像一个表,但是如果我遗漏了一些明显的东西,请告诉我

RecyclerView XML:

                    <android.support.v7.widget.RecyclerView
                    android:id="@+id/tagsRecyclerView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"                        
                    android:layout_marginTop="6dp"
                    android:layout_marginHorizontal="8dp"
                    android:rotationY="180"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="1.0"
                    app:layout_constraintStart_toEndOf="@+id/tagsTxt"
                    app:layout_constraintTop_toBottomOf="@+id/paragraphTxt" />
当前外观和布局;网格拉伸以填充所有空间,列数一致:

所需的外观换行、一致的间距、动态列:

你应该考虑一下。查看GitHub项目站点上的自述文件。我想你会发现它符合你的需要。还有一个用于RecyclerView的FlexboxLayoutManager。这一切都得到了谷歌的支持


您可以下载GitHub项目来使用它,看看是否可以使用它。Google Play商店中也有一些演示游乐场应用程序。只需搜索它。

我不会为此使用网格布局。我将为每一行设置一个线性布局,并在添加文本之前进行测量。如果不合适,我会添加一行。
tagRecyclerLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);