指定 android 网格布局中的项目以重新调整大小以填充屏幕高度

Specifying items in an android grid layout to re-size to fill screen height

我有一个 GridLayout 有 6 个元素 (TextView's)。

我将 columnCount 设置为 3

每个元素的宽度 TextView 是 33%,因为 columnCount 是 3。这正是我想要的 - 但是,每个元素的高度 TextView不填充以匹配屏幕(第一行和第二行元素的高度均为 50%,因为有两行 3 个元素 - 一个 3x2 的网格)。

这是XML:

<android.support.constraint.ConstraintLayout 
    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"
    tools:context="ddx.project_dnd.MainActivity">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="3"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorPrimaryDark"
            android:gravity="center"
            android:text="Tile1" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorAccent"
            android:gravity="center"
            android:text="Tile2" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorPrimary"
            android:gravity="center"
            android:text="Tile3" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorAccent"
            android:gravity="center"
            android:text="Tile4" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorPrimary"
            android:gravity="center"
            android:text="Tile5" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_columnWeight="1"
            android:layout_gravity="fill_horizontal"
            android:background="@color/colorAccent"
            android:gravity="center"
            android:text="Tile6" />

    </GridLayout>
</android.support.constraint.ConstraintLayout>

如上图XML所示,每个元素TextView's的高度设置为100dp。有没有一种方法可以专门使用 GridLayout,通过 XML 布局将每个元素的高度扩展到 50%?我已经尝试搜索,但发现大部分答案类似于 this resource and this,这是以编程方式进行的,或者我在选择布局时遇到 XY 问题?

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="3">

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorPrimaryDark"
        android:gravity="center"
        android:text="Tile1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:text="Tile2" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorPrimary"
        android:gravity="center"
        android:text="Tile3" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:text="Tile4" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorPrimary"
        android:gravity="center"
        android:text="Tile5" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_rowWeight="1"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:text="Tile6" />

</GridLayout>