web-dev-qa-db-fra.com

Définir deux boutons à la même largeur indépendamment de la taille de l'écran?

Ok, j'ai deux boutons dans la disposition linéaire:

<LinearLayout Android:id="@+id/linearLayout1" 
              Android:layout_height="wrap_content" 
              Android:layout_width="fill_parent">
        <Button Android:id="@+id/aktiviraj_paket" 
                Android:text="Aktiviraj" 
                Android:layout_height="40sp" 
                Android:layout_width="160sp" 
                Android:background="@drawable/my_border3" 
                Android:onClick="myClickHandle"></Button>
        <Button Android:id="@+id/deaktiviraj_paket" 
                Android:text="Deaktiviraj" 
                Android:layout_height="40sp" 
                Android:layout_width="fill_parent" 
                Android:background="@drawable/my_border3"
                Android:onClick="myClickHandle">
        </Button>
</LinearLayout>

Le problème est donc que si j'utilise fill parent sur les deux boutons, ils sont l'un sur l'autre. J'ai donc fait le premier bouton 160sp width et le second est fill_parent. Si cela s’affiche sur un écran de 4 pouces ou moins, les boutons ont la même taille, mais si j’essaie sur une tablette (10 pouces), le premier bouton reste large de 160 sp et le second est étiré jusqu’à la fin de l’écran (parce que fill_parent). Puis-je faire cela, afin que les deux boutons puissent être de taille égale, quelle que soit la taille de l'écran?

38
Goran

Utilisez Android:layout_weight="1" sur les deux Buttons. Définissez Android:layout_width="0dp" sur les deux. Étant donné que les deux boutons ont désormais une pondération égale, ils auront désormais chacun la moitié de la largeur du parent.

Vous pouvez en savoir plus ici: http://developer.Android.com/guide/topics/ui/layout/linear.html

94
Che Jami

Si ce que vous cherchez à faire est de faire en sorte que tous les boutons aient la largeur du bouton le plus large, le réglage des poids ne fera pas cela. Au lieu de cela, vous pouvez mettre tous les boutons dans un TableLayout:

   <TableLayout 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" >

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/short_text" />
        </TableRow>

        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="@string/enter_manually" />
        </TableRow>
    </TableLayout>

Cette disposition affichera 2 boutons superposés, de même largeur.

16
user3838403

régler à chaque bouton:

Android:layout_weight="0.5"
Android:layout_width="0dp"
3
Bogdan M.
Display display=getWindowManager().getDefaultDisplay();
    int width=display.getWidth();
    btn1.setWidth(width/2);
    btn2.seTwidth(width/2);

Définissez quoi que ce soit dans le fichier XML, puis commencez par trouver la largeur du périphérique, puis définissez la moitié de la largeur sur les deux boutons Maintenant, sur chaque appareil, ils auront exactement la même apparence

3
Tofeeq
<LinearLayout
    Android:id="@+id/layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="horizontal" >

    <Button
        Android:id="@+id/button1"
        Android:layout_width="match_parent"
        Android:layout_height="40dp"
        Android:layout_weight="1"
        Android:text="One" />

    <Button
        Android:id="@+id/button2"
        Android:layout_width="match_parent"
        Android:layout_height="40dp"
        Android:layout_weight="1"
        Android:text="Two" />
</LinearLayout>

Voici l'exemple des boutons de même taille pouvant être utilisés côte à côte à partir du code ci-dessus

Android:layout_weight 

est utilisé pour attribuer un espace pour les boutons ou un montant équivalent pour chaque enfant de LinearLayout.

Remarque: cela ne fonctionne que sur une disposition linéaire.

1
Prits Ramani
Android:layout_weight="0.5"
Android:layout_width="0dp

ça marche 

1
Baris C

Cela fonctionne:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal">
    <Button
        Android:layout_width="0dp"
        Android:layout_weight="0.5"
        Android:layout_height="wrap_content"
        Android:text="my btn 1"/>
    <Button
        Android:layout_width="0dp"
        Android:layout_weight="0.5"
        Android:layout_height="wrap_content"
        Android:text="my btn 2"/>
    </LinearLayout>
0
ata rezapouri

Définir Android: layout_weight = "1" dans la présentation qui la contient La présentation linéaire doit avoir Android: orientation définie sur horizontale. Et puis les boutons intérieurs devraient avoir les éléments suivants:

Android: layout_width = "0dp"

Android: layout_weight = "0.5"

0