【发布时间】:2017-12-28 19:07:47
【问题描述】:
在 GridView 的适配器中,我看到当内容布局膨胀时,它必须包含宽度和高度。如何均匀分布 GridView 的内容,使内容占用相等的空间?
另外,我不希望屏幕可以滚动。
【问题讨论】:
-
你事先知道每个单元格内容的w+h吗?
在 GridView 的适配器中,我看到当内容布局膨胀时,它必须包含宽度和高度。如何均匀分布 GridView 的内容,使内容占用相等的空间?
另外,我不希望屏幕可以滚动。
【问题讨论】:
如果您正在为 API 21 及更高版本进行开发,GridLayout 支持“重量”的概念,您可能对 LinearLayout 很熟悉。所以你可以给每个单元格这些属性:
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
现在你的GridView(不管你给它的大小)将被分成三个偶数行和三个偶数列。
如果您必须支持较早的 API 级别,最好的选择是使用ConstraintLayout。使用此策略,您将再次为每个孩子提供 0dp 的宽度+高度,但现在您将设置约束链,以便每行均分,每列均分。比如:
<View
android:id="@+id/child1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/child2"/>
<View
android:id="@+id/child2"
app:layout_constraintLeft_toRightOf="@id/child1"
app:layout_constraintRight_toLeftOf="@id/child3"/>
<View
android:id="@+id/child3"
app:layout_constraintLeft_toRightOf="@id/child2"
app:layout_constraintRight_toRightOf="parent"/>
在垂直方向做同样的事情:
<View
android:id="@+id/child1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/child4"/>
<View
android:id="@+id/child4"
app:layout_constraintTop_toBottomOf="@id/child1"
app:layout_constraintBottom_toTopOf="@id/child7"/>
<View
android:id="@+id/child7"
app:layout_constraintTop_toBottomOf="@id/child4"
app:layout_constraintBottom_toBottomOf="parent"/>
【讨论】: