我有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_alignTop
和layout_alignBottom
使ToggleButton与ImageButton具有相同的高度,但这不起作用:
如您所见,ToggleButton对齐不正确,它总是比ImageButton高一点。我做错了什么?
在Android 2.3上进行测试
答案 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>
切换按钮的高度比图像按钮高一点,你必须增加图像按钮的宽度和高度,而不是完美的,使用相同的宽度和高度,你可以找到差别
答案 1 :(得分:1)
LinearLayout
作为RelativeLayout
的子级,并添加ToggleButton
和
ImageView
到它。ToggleButton
集android: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
,其顶行有不透明像素。 (点击链接自行检查。)
因此,当与ToggleButton
并排放置时,它们不会出现以具有相同的高度。