如何在 GridLayout 的边界内调整视图?

How to fit views inside bounds of GridLayout?

我试图在 GridLayout 中放置一个 4x6 的按钮网格,但有些按钮被放置在布局的边界之外并且不知道如何修复它。基本上我希望所有按钮视图都缩小以适合网格布局。

   <GridLayout
        android:id="@+id/grid_buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="6"
        android:rowCount="4">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_row="0"
            android:text="@string/button_1"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="0"
            android:text="@string/button_2"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="0"
            android:text="@string/button_3"/>

        <Button
            android:layout_weight="1"
            android:layout_column="0"
            android:layout_row="1"
            android:text="@string/button_4"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="1"
            android:text="@string/button_5"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="1"
            android:text="@string/button_6"/>

        <Button
            android:layout_weight="1"
            android:layout_column="0"
            android:layout_row="2"
            android:text="@string/button_7"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="2"
            android:text="@string/button_8"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="2"
            android:text="@string/button_9"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="3"
            android:text="@string/button_0"/>

        <Button
            android:layout_weight="1"
            android:layout_column="3"
            android:layout_row="0"
            android:text="@string/button_A"/>

        <Button
            android:layout_weight="1"
            android:layout_column="4"
            android:layout_row="0"
            android:text="@string/button_B"/>

        <Button
            android:layout_weight="1"
            android:layout_column="5"
            android:layout_row="0"
            android:text="@string/button_C"/>

        <Button
            android:layout_weight="1"
            android:layout_column="3"
            android:layout_row="1"
            android:text="@string/button_D"/>

        <Button
            android:layout_weight="1"
            android:layout_column="4"
            android:layout_row="1"
            android:text="@string/button_E"/>

        <Button
            android:layout_weight="1"
            android:layout_column="5"
            android:layout_row="1"
            android:text="@string/button_F"/>

    </GridLayout>

而不是 GridLayout,您可以通过使用具有 XML 属性 android:layout_weightandroid:weightSum 的多个 LinearLayout 轻松实现您想要的结果。

这是您的 4*6 网格。只需根据您的需要更改按钮文本即可。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="4">

<!-- First Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="2"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="3"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="4"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="5"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="6"/>

</LinearLayout>

<!-- Second Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="7"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="8"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="9"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="10"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="11"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="12"/>

</LinearLayout>

<!-- Third Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="13"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="14"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="15"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="16"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="17"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="18"/>

</LinearLayout>

<!-- Fourth Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="19"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="20"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="21"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="22"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="23"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="24"/>

</LinearLayout>

希望对你有所帮助~