99 votes

Android : comment faire grandir une vue pour remplir l'espace disponible ?

Cela semble simple, mais je ne sais pas comment le faire. J'ai une mise en page horizontale avec un EditText et deux ImageButtons. Je veux que les boutons d'image aient une taille fixe et que le texte d'édition occupe l'espace restant dans la mise en page. Comment cela peut-il être accompli ?

<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>

162voto

Hieronymus Points 510

Si vous souhaitez conserver la même mise en page (c'est-à-dire les boutons après le texte), utilisez la propriété layout_weight, ainsi que fill_parent, donc :

<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>

En donnant le EditText 'poids', il est déterminé en dernier et donne la priorité aux boutons. Jouez avec les différents layout_weights et voyez à quel point vous pouvez vous amuser !

53voto

Sunil Pandey Points 3605

essayez ceci dans la mise en page relative

<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>

19voto

taynguyen Points 131

Utilisez le paramètre layout_width ou layout_height 0dp (Par l'orientation que vous souhaitez remplir l'espace restant). Ensuite, utilisez le layout_weight pour le faire remplir l'espace restant.

0voto

Jose Points 21

J'ai un problème similaire avec le remplissage d'une LinearLayout (je travaille avec la version d'Artic Fox). Dans ma conception, j'ai 2 boutons dans une mise en page linéaire avec une orientation verticale. Dans mon cas, je résous le problème en mettant :

android:insetBottom="0dp"
android:insetTop="0dp"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X