我想显示一个包含5个项目的网格(每个项目下面都有ImageView和TextView),而3个位于第一行,2个位于第二行(每行相应地调整了单元格的大小)。在我成功完成这项工作之后,我想在某些单元格中稍微改变填充和/或边缘,但这不应该是一个问题。
为此,我尝试使用RecyclerView,它运行得很好,但后来我认为它不是一个好的解决方案,因为我需要它在ScrollView中,这可能导致坏的嵌套滚动行为,而我需要一起显示所有网格项,而不滚动(如布局)。
由于我只需要显示5个项目(甚至更少),我决定尝试使用GridLayout。
看看GridLayout的样本,我以为我理解它是如何工作的,但似乎我有一个奇怪的问题使用它。
我试图让第一行有3个单元格的GridLayout,第二行有2个单元格,所有这些都是居中的。
为此,我决定列数为6(除以2和3),行数为2.第一行将包含每个跨度为2的单元格,对于第二行,每个单元格的跨度为3。
然而,无论我做什么,我都无法完成这个简单的任务。
例如,这是我从下面的代码得到的:
上一行很好,但第二行的第一项是2列(2/6 = 1/3),另一个是4列(4/6 = 2/3)。
以下是代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
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="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:columnCount="6"
app:orientation="horizontal"
app:rowCount="2"
tools:context="com.example.user.myapplication.MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#f00"
app:layout_columnSpan="2"
app:layout_gravity="fill"
app:srcCompat="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ff0"
app:layout_columnSpan="2"
app:layout_gravity="fill"
app:srcCompat="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#f0f"
app:layout_columnSpan="2"
app:layout_gravity="fill"
app:srcCompat="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#0f0"
app:layout_columnSpan="3"
app:layout_gravity="fill"
app:srcCompat="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00f"
app:layout_columnSpan="3"
app:layout_gravity="fill"
app:srcCompat="@mipmap/ic_launcher"/>
</android.support.v7.widget.GridLayout>
我尝试使用重量代替。我试图为每个单元格设置确切的列和行。我试图使用内置的GridLayout而不是支持库之一,我试图改变单元格的重力......
将GridLayout本身的宽度更改为&#34; match_parent&#34;也有自己奇怪的结果:
更改细胞的宽度更糟糕。
当然,我也试过阅读更多并试用样品。
代码有什么问题?为什么它看起来像这样?
编辑:找到了使用RecyclerView的解决方案。不过,我想知道我写的内容有什么问题,并从中了解GridLayout。