【问题标题】:Is it possible to evenly distribute the number of buttons in GridView?是否可以平均分配 GridView 中的按钮数量?
【发布时间】:2017-12-28 19:07:47
【问题描述】:

在 GridView 的适配器中,我看到当内容布局膨胀时,它必须包含宽度和高度。如何均匀分布 GridView 的内容,使内容占用相等的空间?

例如,我想创建一个类似于此的 3x3 正方形:

另外,我不希望屏幕可以滚动。

【问题讨论】:

  • 你事先知道每个单元格内容的w+h吗?

标签: android gridview


【解决方案1】:

如果您正在为 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"/>

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2020-08-10
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多