使用四个 ImageButtons 创建 Layout/Screen(全部相同大小)

Create Layout/Screen with four ImageButtons (all of the same size)

我在创建仅包含四个 ImageButton 的 Android 布局时遇到了一个大问题。

它应该是这样的:

目前我创建了一个带有两个 LinearLayout 的 TableLayout(水平:每个包含两个按钮。)但是我通过设置确切的值来做到这一点:

<ImageButton
            android:layout_width="178dp"
            android:layout_height="260dp"
            android:src="@drawable/personal_coach"
            android:id="@+id/button_personal_coach"
            android:layout_weight="0.25"
            android:scaleType="fitXY"
            android:background="?android:selectableItemBackground"
            android:layout_marginRight="4dp"
            />

有更好的方法吗? (对于其他屏幕尺寸更动态,无需将宽度和高度设置为值)

试试这样的东西:

    <?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="2">



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="2"
        android:orientation="horizontal">

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

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

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="2"
        android:orientation="horizontal">

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

        <ImageButton
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>

说明

这里我们使用 weight 属性,它根据权重按百分比划分屏幕。例如,在两个 children 中都输入 1 将使它们占据屏幕的 50%。这就是我们首先在垂直方向上做的,然后在每个按钮的水平方向上做的。