Когда мне нужно это сделать, я использую атрибут LinearLayout
и layout_weight
xml.
Этот XML решит вашу проблему:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/index_champs_recherche"
android:layout_width ="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
/>
<Button
android:id="@+id/index_bouton_recherche"
android:layout_width="45px"
android:layout_height="45px"
android:background="@drawable/loupe"
/>
</LinearLayout>
layout_width="0dp"
означает, что изначально для представления не требуется места. Кнопка имеет значение wrap_content
, поэтому она требует только своего места.
Атрибут layout_weight
применяется после, и он разделяет оставшееся пространство в макете (ширина для ориентации = горизонтальная, высота для вертикальной). Вес представления по умолчанию равен 0, поэтому при значении 1 EditText займет 100% оставшегося пространства.