Это кажется простым, но я не могу понять, как это сделать. У меня горизонтальный макет с EditText и двумя ImageButton. Я хочу, чтобы 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>
Если вы хотите, чтобы макет оставался прежним (например, кнопки после текста), используйте
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 и посмотрите, сколько удовольствия вы получите!источник
Хорошо:
<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
(match_parent
в 2.2+), так что он занимает остальное доступное пространство.Извините, не прочитал ваш вопрос будет достаточно. Приведенный выше код дает ответ, если вы хотите сделать это вертикально. Для горизонтального макета должен работать код, опубликованный @Sunil.
источник
Используйте установите
layout_width
илиlayout_height
на0dp
(По ориентации, которую вы хотите заполнить оставшееся пространство). Затем используйте,layout_weight
чтобы заполнить оставшееся пространство.источник