这似乎很简单,但我无法弄清楚如何做到这一点。我有一个带有EditText和两个ImageButtons的水平布局。我希望ImageButtons具有固定大小,并且EditText占用布局中的剩余空间。如何实现这一目标?
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>
<ImageButton
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
</LinearLayout>
答案 0 :(得分:127)
如果您想保持布局相同(即文本后面的按钮),请使用layout_weight
属性以及fill_parent
,因此:
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<ImageButton
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
</LinearLayout>
给予EditText
'权重'使得它最后得出结论并优先于按钮。玩不同的layout_weights,看看你有多么有趣!
答案 1 :(得分:48)
在相对布局中尝试这个
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/btn1"
android:src="@drawable/icon"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_alignParentRight="true"/>
<ImageButton
android:id="@+id/btn2"
android:src="@drawable/icon"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_toLeftOf="@+id/btn1"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn2">
</EditText>
</RelativeLayout>
答案 2 :(得分:19)
好:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/button1"
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_alignParentTop="true"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/button1"
android:layout_height="50dip">
</ImageButton>
<EditText
android:layout_below="@id/button"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
</EditText>
</RelativeLayout>
布局的关键点是:
fill_parent
稍后在文件中它只考虑剩余空间,而不是全部如果没有别的东西可以占用的空间fill_parent
(2.2+中的match_parent
),以便占用剩余的可用空间抱歉没有看过你的问题就够了。如果您想以垂直方式执行此操作,上面的代码将提供答案。对于水平布局,由@Sunil发布的代码应该有效。
答案 3 :(得分:8)
使用设置layout_width
或layout_height
至0dp
(按您要填充剩余空间的方向)。
然后使用layout_weight
填充剩余空间。