如何使Toggle Button和Image Button在RelativeLayout中的高度相同?

时间:2013-01-18 08:57:31

标签: android layout button alignment togglebutton

我有RelativeLayout一个ImageButton,一个ToggleButton和其他一些控件。两个按钮在RelativeLayout的右侧对齐。我希望他们拥有相同的高度。这是我的布局xml:

<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="5dip"
    android:paddingRight="5dip"
    android:paddingBottom="10dip" >

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/copy"
        android:layout_alignParentRight="true" />

    <ToggleButton
        android:id="@+id/buttonView"
        android:layout_width="wrap_content"
        android:layout_height="0dip"
        android:textOn="Hide"
        android:textOff="View" 
        android:layout_toLeftOf="@id/imageButton" 
        android:layout_alignTop="@id/imageButton"
        android:layout_alignBottom="@id/imageButton" />

    <!-- ... other controls ... -->
</RelativeLayout>

我尝试设置layout_height="0dip"并使用layout_alignToplayout_alignBottom使ToggleButton与ImageButton具有相同的高度,但这不起作用:

enter image description here

如您所见,ToggleButton对齐不正确,它总是比ImageButton高一点。我做错了什么?

在Android 2.3上进行测试

2 个答案:

答案 0 :(得分:2)

试试这样..

         <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="10dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip" >

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_launcher" />

    <ToggleButton
        android:id="@+id/buttonView"
        android:layout_width="55dp"
        android:layout_height="54dp"
        android:layout_alignTop="@id/imageButton"
        android:layout_toLeftOf="@+id/imageButton"
        android:textOff="View"
        android:textOn="Hide" />

    <!-- ... other controls ... -->
</RelativeLayout>

切换按钮的高度比图像按钮高一点,你必须增加图像按钮的宽度和高度,而不是完美的,使用相同的宽度和高度,你可以找到差别

enter image description here

答案 1 :(得分:1)

  1. LinearLayout作为RelativeLayout的子级,并添加ToggleButtonImageView到它。
  2. 对于ToggleButtonandroid:layout_height="match_parent"
  3. 修改
    这是工作代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:paddingBottom="10dip" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
    
            <ToggleButton
                android:id="@+id/buttonView"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textOff="View"
                android:textOn="Hide" />
    
            <ImageButton
                android:id="@+id/imageButton"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:src="@drawable/copy" />
        </LinearLayout>
    </RelativeLayout>
    

    编辑2:

    理解你的问题。以上代码出现仅适用于Android 4.0,默认为Holo主题。

    在Android 2.3上,在默认主题中,ImageButton的样式将背景指定为btn_default_normal,其中顶行像素是透明的。而同一主题的ToggleButton背景使用btn_default_small_normal,其顶行有不透明像素。 (点击链接自行检查。)

    因此,当与ToggleButton并排放置时,它们不会出现以具有相同的高度。