web-dev-qa-db-fra.com

Android: comment rendre tous les éléments à l'intérieur de LinearLayout de la même taille?

Je voudrais créer une boîte de dialogue pour afficher un titre vidéo et des tags. Sous le texte, je voudrais ajouter des boutons Afficher, Modifier et Supprimer et donner à ces éléments la même taille. Quelqu'un sait-il comment modifier le fichier de disposition .xml afin de rendre les éléments à l'intérieur de LinearView de la même taille?

Le fichier de mise en page actuel ressemble à ceci:

<LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" 
    Android:orientation="vertical">

    <LinearLayout 
          Android:layout_width="wrap_content" 
          Android:layout_height="wrap_content" 
          Android:orientation="vertical">

          <TextView 
              Android:layout_width="wrap_content" 
              Android:layout_height="wrap_content" 
              Android:id="@+id/txtTitle" Android:text="[Title]" >
          </TextView>

          <TextView 
              Android:layout_width="wrap_content"
              Android:layout_height="wrap_content" 
              Android:id="@+id/txtTags"            
              Android:text="[Tags]" >
          </TextView>

    </LinearLayout>

    <LinearLayout 
        Android:layout_width="fill_parent" 
        Android:layout_height="wrap_content" 
        Android:orientation="horizontal">

        <Button 
           Android:layout_width="wrap_content" 
           Android:layout_height="wrap_content" 
           Android:id="@+id/btnPlay" 
           Android:text="View">
        </Button>

        <Button 
            Android:layout_width="wrap_content" 
            Android:layout_height="wrap_content" 
            Android:id="@+id/btnEdit" 
            Android:text="Edit">
        </Button>

        <Button 
            Android:layout_width="wrap_content" 
            Android:layout_height="wrap_content" 
            Android:id="@+id/btnDelete" 
            Android:text="Delete">
        </Button>

    </LinearLayout>

</LinearLayout>

J'apprécierais que quelqu'un puisse montrer la solution en modifiant le contenu du fichier collé.

Merci!

77
Niko Gamulin

Utilisation Android:layout_width="0px" et Android:layout_weight="1" sur les trois Buttons. Cela dit, les boutons ne devraient pas occuper plus de 0 pixels, mais les trois devraient diviser tout espace supplémentaire entre eux. Cela devrait vous donner l'effet visuel que vous souhaitez.

168
CommonsWare

Une autre façon consiste à faire Android:layout_width="fill_parent" et Android:layout_weight="1" cela fonctionnera aussi très bien !!!

32
Eby

Utilisez LinearLayout avec votre weightSum souhaité et créez des éléments avec layout_weight égaux. Voici un exemple ...

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:weightSum="5">

    <ImageView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:src="@drawable/ic_share_white_36dp"/>

    <ImageView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:src="@drawable/ic_search_white_36dp"/>

    <ImageView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:src="@drawable/ic_event_note_white_36dp"/>

    <ImageView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:src="@drawable/ic_brush_white_36dp"/>

    <ImageView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:src="@drawable/ic_menu_white_36dp"/>
</LinearLayout>

Donc, la somme pondérale de tous les éléments est 5. Voici la capture d'écran ...

enter image description here

Notez que les icônes Google Material Design sont utilisées. J'espère que cela vous sera utile.

18
Madan Sapkota