web-dev-qa-db-fra.com

Comment aligner linéaire sur le centre vertical?

Je tente d'aligner le centre vertical de linearlayout, ce qui montre l'image suivante (bordure en couleur céleste) pour supprimer le centre vertical du bouton.

donc j'ai mis la gravité de id: groupNumbers à center_vertical.

mais pas changé. 

Comment aligner id: groupNumbers au centre des boutons?

enter image description here

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:orientation="horizontal"
              Android:layout_width="match_parent"
              Android:layout_height="match_parent">

    <LinearLayout
            Android:id="@+id/groupNumbers"
            Android:orientation="horizontal"
            Android:gravity="center_vertical"
            Android:layout_weight="0.7"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content">

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

            <TextView
                    Android:id="@+id/txtSelected01"
                    Android:text="00"
                    Android:textSize="30dp"
                    Android:gravity="center_horizontal"
                    Android:layout_weight="1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"/>
        </LinearLayout>

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

            <TextView
                    Android:id="@+id/txtSelected02"
                    Android:text="00"
                    Android:textSize="30dp"
                    Android:gravity="center_horizontal"
                    Android:layout_weight="1"
                    Android:layout_width="0dp"
                    Android:layout_height="wrap_content"/>
        </LinearLayout>
    </LinearLayout>


    <Button
            Android:id="@+id/btn_deleteNum"
            Android:text="Delete"
            Android:textSize="20dp"
            Android:layout_weight="0.2"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"/>
</LinearLayout>
47
S.J. Lim

Changer l'orientation et la gravité dans

<LinearLayout
    Android:id="@+id/groupNumbers"
    Android:orientation="horizontal"
    Android:gravity="center_vertical"
    Android:layout_weight="0.7"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

à 

Android:orientation="vertical"
Android:layout_gravity="center_vertical"

Vous ajoutez une orientation: horizontale, de sorte que la disposition contiendra tous les éléments sur une seule ligne horizontale. Ce qui ne vous permettra pas de placer l'élément au centre.

J'espère que cela t'aides.

116
MysticMagicϡ

utilisez Android:layout_gravity au lieu de Android:gravity

Android:gravity définit la gravité du contenu de la vue utilisé sur .Android:layout_gravity définit la gravité de la vue ou de la présentation dans son parent.

26

Utilisez layout_gravity au lieu de gravity. layout_gravity indique au parent où il doit être positionné et gravity indique à son enfant où ils doivent être positionnés.

<LinearLayout
    Android:id="@+id/groupNumbers"
    Android:orientation="horizontal"
    Android:layout_gravity="center_vertical"
    Android:layout_weight="0.7"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">
6
Lawrence Choy

Pour moi, j'ai résolu le problème en utilisant Android:layout_centerVertical="true" dans un parent RelativeLayout:

<RelativeLayout ... >

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

</RelativeLayout>
4
Mandy

Pour une boîte qui apparaît au centre - horizontale et verticale -, cela ne fonctionne qu'avec un seul LinearLayout La answer de Viswanath L était très utile.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center"
    Android:background="@drawable/layout_bg"
    Android:gravity="center"
    Android:orientation="vertical"
    Android:padding="20dp">

    <TextView
        Android:id="@+id/dialog_header"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:padding="10dp"
        Android:text="Error"
        Android:textColor="#000" />

    <TextView
        Android:id="@+id/message_text"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:padding="10dp"
        Android:text="Error-Message"
        Android:textColor="#000" />


    <Button
        Android:id="@+id/dialogButtonOK"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/message_text"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginTop="5dp"
        Android:text="Ok" />


</LinearLayout>
2
Gene Bo

utiliser RelativeLayout dans LinearLayout 

exemple:

<LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">
        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">
            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_centerVertical="true"
                Android:text="Status"/>
        </RelativeLayout>
</LinearLayout>
0
Somwang Souksavatd