web-dev-qa-db-fra.com

Android - Centrer TextView horizontalement dans LinearLayout

J'ai la mise en page suivante

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

<LinearLayout
    Android:orientation="horizontal"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/title_bar_background">

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:textAppearance="?android:attr/textAppearanceLarge"
        Android:padding="10dp"
        Android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

Il semble que le XML soit correct mais le texte est aligné à gauche. La vue texte occupe toute la largeur du parent et la vue texte est définie pour être centrée. Je ne sais pas quel est le problème ...

99
Jake Wilson

Ce qui se passe, c’est que puisque le TextView remplit la largeur entière du LinearLayout intérieur, il se trouve déjà au centre horizontal du layout. Lorsque vous utilisez Android:layout_gravity, le widget est globalement placé dans la gravité spécifiée. Au lieu de placer tout le centre du widget, vous essayez réellement de placer le contenu au centre, ce qui peut être accompli avec Android:gravity="center_horizontal" et l'attribut Android:layout_gravity peut être supprimé.

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

<LinearLayout
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/title_bar_background">

<TextView
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:gravity="center"
    Android:textAppearance="?android:attr/textAppearanceLarge"
    Android:padding="10dp"
    Android:text="HELLO WORLD" />

</LinearLayout>

22
JoeLallouz

Si vous définissez <TextView> au centre de <Linearlayout>, mettez d'abord Android:layout_width="fill_parent" obligatoire
Pas besoin d'utiliser une autre gravité 

    <LinearLayout
            Android:layout_toRightOf="@+id/linear_profile" 
            Android:layout_height="wrap_content"
            Android:layout_width="fill_parent"
            Android:orientation="vertical"
            Android:gravity="center_horizontal">
            <TextView 
                Android:layout_height="wrap_content"
                Android:layout_width="wrap_content"
                Android:text="It's.hhhhhhhh...."
                Android:textColor="@color/Black"

                />
    </LinearLayout>
18
135

Utilisez Android:gravity="center" dans TextView au lieu de layout_gravity.

16
Blackbelt

Utilisez simplement: Android: layout_centerHorizontal = "true"  

Il mettra toute la vue de texte au centre

0
charlenecipres