没有空间时,在相对布局中自动更改按钮高度

时间:2016-02-22 09:33:02

标签: android relativelayout

我有2个ImageButton和一个ToggleButton,它们的相对布局填充了它的父级。这是xml代码:

        <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/relative2">


        <ImageButton
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:id="@+id/imageButton4"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true"
            android:src="@drawable/ic_exposure_minus1"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp" />


        <ImageButton
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:id="@+id/imageButton6"
            android:src="@drawable/ic_cancel_black"
            android:layout_alignTop="@+id/imageButton4"
            android:layout_toEndOf="@+id/imageButton4"
            android:layout_marginLeft="5dp" />



        <ToggleButton
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:text="New ToggleButton"
            android:id="@+id/toggleButton"
            android:checked="false"
            android:clickable="true"
            android:textOn="+"
            android:textOff="-"
            android:textSize="18dp"
            android:layout_below="@+id/imageButton4"
            android:layout_toStartOf="@+id/imageButton6"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:layout_alignParentEnd="false"
            android:layout_alignParentStart="false" />

    </RelativeLayout>

当设备处于纵向模式时,按钮有足够的高度空间。当设备旋转到横向时,相对布局变小,所有按钮都没有空间。缺乏空间是在高度方面。因此,放置在其他按钮底部的Togglebutton会自动缩放到较小的高度,以便它适合。

我希望所有按钮的高度都能同等改变,而不是只改变最后一个(ToggleButton)的高度。然后我会有3个具有相同高度的按钮,而不是保持初始高度的2个按钮和高度较小的按钮。 我可以通过更改xml文件来获得此结果吗?

PS:为了更清楚:

enter image description here

2 个答案:

答案 0 :(得分:0)

要使3个按钮的高度相等,请将父布局从相对布局更改为线性布局。并同等地启用布局权重属性。所以它们的大小相同。

答案 1 :(得分:0)

如果要在不同方向上制作统一的UI,则应使用 LinearLayout 。 使用方向属性以及布局权重,您将获得所需的结果。

您只需相应地制作嵌套的Linearlayouts。

这是使用线性布局制作的布局。

希望您了解使用线性布局的重要性。

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

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="5dp" >

            <ImageButton
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:layout_weight="0.5"
                android:id="@+id/imageButton4"
                android:src="@drawable/ic_exposure_minus1"
                android:layout_marginLeft="5dp"/>


            <ImageButton
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:layout_weight="0.5"
                android:id="@+id/imageButton6"
                android:src="@drawable/ic_cancel_black"
                android:layout_marginLeft="5dp" />

            </LinearLayout>

            <ToggleButton
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:text="New ToggleButton"
                android:id="@+id/toggleButton"
                android:checked="false"
                android:clickable="true"
                android:textOn="+"
                android:textOff="-"
                android:textSize="18dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"/>

        </LinearLayout>