指定 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>
我有一个 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>