TableLayout 和 layout_weight 不起作用

TableLayout and layout_weight doesn't work

尝试使用 weightSum=100android:layout_weight 构建计算器视图,其中常规按钮应占屏幕的 25%0 digit @+id/button18 按钮的大小应该是普通按钮的两倍,所以它被设置为 android:layout_weight="50" 但是它没有占据所需的 space。为什么会这样?

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">
       <TableRow
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:weightSum="100">

           <Button
               android:id="@+id/button13"
               android:layout_width="wrap_content"
               android:layout_height="74dp"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="1"
               android:textSize="30sp" />

           <Button
               android:id="@+id/button14"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="2" />

           <Button
               android:id="@+id/button15"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="3" />

           <Button
               android:id="@+id/button16"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/orange"
               android:text="+"
               android:textColor="@android:color/white"
               android:textSize="30sp" />
       </TableRow>

       <TableRow
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:weightSum="100">

           <Button
               android:id="@+id/button18"
               android:layout_height="74dp"
               android:layout_weight="50"
               android:background="@color/lighterGrey"
               android:text="0" />

           <Button
               android:id="@+id/button15"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="." />

           <Button
               android:id="@+id/button16"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/orange"
               android:text="="
               android:textColor="@android:color/white"
               android:textSize="30sp" />
       </TableRow>

  </TableLayout>
</LinearLayout>

我认为,您没有为 button18 和 button15

设置宽度
android:layout_width="wrap_content"

但我建议您在将权重设置为宽度时使用 width="0dp" 而不是 width="wrap_content" 以确保准确性。

你应该使用 android:layout_width="0dp".

更改所有 Button 的宽度 android:layout_width="0dp" .

试试这个。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="100">

            <Button
                android:id="@+id/button13"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="1"
                android:textSize="30sp"/>

            <Button
                android:id="@+id/button14"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="2"/>

            <Button
                android:id="@+id/button15"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="3"/>

            <Button
                android:id="@+id/button16"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/orange"
                android:text="+"
                android:textColor="@android:color/white"
                android:textSize="30sp"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="100">

            <Button
                android:id="@+id/button18"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="50"
                android:background="@color/lighterGrey"
                android:text="0"/>

            <Button
                android:id="@+id/button1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="."/>

            <Button
                android:id="@+id/button2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/orange"
                android:text="="
                android:textColor="@android:color/white"
                android:textSize="30sp"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

输出