282 votes

est-il possible de répartir uniformément les boutons sur toute la largeur d'un jeu linéaire Android

J'ai une disposition linéaire (orientée horizontalement) qui contient 3 boutons. Je veux que les 3 boutons aient une largeur fixe et soient répartis uniformément sur la largeur de la mise en page linéaire.

Je peux gérer cela en réglant la gravité de la structure linéaire sur le centre, puis en ajustant le rembourrage des boutons, mais cela fonctionne pour une largeur fixe et ne fonctionne pas pour changer de périphérique ou d'orientation.

 <LinearLayout android:id="@+id/LinearLayout01" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:gravity="center">

<Button 
android:id="@+id/btnOne"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:width="120dip"></Button>

<Button 
android:id="@+id/btnTwo"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:width="120dip"></Button>


<Button 
android:id="@+id/btnThree"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:width="120dip"></Button>

</LinearLayout>
 

390voto

Dan Dyer Points 30082

En élargissant la réponse de fedj , si vous définissez layout_width sur 0dp et réglez les layout_weight pour chacun des boutons sur 1, la largeur disponible sera partagée de manière égale entre les boutons.

248voto

stoefln Points 2717

Si vous ne voulez pas que les boutons soient redimensionnés, mais ajustez l'espacement entre les boutons (espacement égal entre tous les boutons), vous pouvez utiliser des vues avec weight = "1" pour remplir l'espace entre les boutons:

     <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:background="@null"
        android:gravity="center_horizontal|center_vertical"
        android:src="@drawable/tars_active" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:background="@null"
        android:gravity="center_horizontal|center_vertical"
        android:src="@drawable/videos_active" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>
 

13voto

marsbear Points 939

Eh bien, si vous avez exactement 3 boutons et s'il est correct (ou même prévu) que les boutons externes soient alignés sur les côtés gauche et droit, vous voudrez peut-être essayer un RelativeLayout qui est moins onéreux (dans de nombreuses situations).

Vous pouvez utiliser layout_alignParentBottom pour aligner tous les boutons sur le bas de la présentation. Utilisez layout_alignParentLeft and Right pour les boutons extérieurs et layout_centerHorizontal pour le bouton du milieu.

Cela fonctionnera bien sur différentes orientations et tailles d'écran.

11voto

fedj Points 1949

Vous devriez jeter un oeil à Android: attribut layout_weight

4voto

Muhammad Points 11

Pour espacer uniformément deux boutons dans une disposition linéaire horizontale, j'ai utilisé 3 objets LinearLayout pour agir comme des espaces à redimensionner automatiquement. J'ai positionné ces objets LinearLayout comme suit:

Bouton [] Bouton1 [] Bouton2 []

([] représente un objet LinearLayout utilisé pour l'espacement)

ensuite, je règle le poids de chacun des objets [] LinearLayout sur 1 et les boutons sont répartis à intervalles réguliers.

J'espère que cela t'aides.

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