2

我有一个RelativeLayoutwith one ImageButton, oneToggleButton和其他一些控件。两个按钮都在 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_alignTop并使layout_alignBottomToggleButton 具有与 ImageButton 相同的高度,但这不起作用:

在此处输入图像描述

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

在 Android 2.3 上测试

4

3 回答 3

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>

切换按钮的高度将比图像按钮高一点,您必须增加图像按钮的宽度和高度,这将是完美的,使用相同的宽度和高度,您会发现差异很小

在此处输入图像描述

于 2013-01-18T09:02:59.533 回答
1

改成

<ImageButton
    android:id="@+id/imageButton"
    android:layout_height="150dp"//some height
    ...

<ToggleButton
    android:id="@+id/buttonView"
    android:layout_height="150dp"//same height as above
于 2013-01-18T08:58:44.897 回答
1
  1. 有一个水平LinearLayout作为 the 的子元素,RelativeLayout并添加ToggleButtonand ImageView到它。
  2. ToggleButtonandroid:layout_height="match_parent"

编辑:
这是工作代码:

<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,在顶行具有不透明像素。(单击链接自行检查。)

因此,当放置在 a 旁边时ToggleButton,它们的高度似乎不同。

于 2013-01-18T09:05:48.320 回答