aligner le centre de texte avec Android

150

Je sais que cela semble facile. J'ai besoin de mettre un texte au centre, mais lorsque le texte est trop long, il doit aller en dessous, mais toujours s'aligner au centre de mon xml.

Voici mon code:

 <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:layout_centerHorizontal="true"
>
    <TextView 
        android:id="@+id/showdescriptiontitle"
        android:text="Title"
        android:textSize="35dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
</LinearLayout>

J'ai mis paddingTop et Bottom car j'ai besoin d'espace. PS: Mon code est plus gros; c'est dans un RelativeLayout.

Tsunaze
la source
Ici, vous n'avez utilisé aucun style de texte
Dinith

Réponses:

381

Définissez également le android:gravityparamètre TextViewsur center.

Pour tester les effets de différents paramètres de mise en page, je recommande d'utiliser une couleur d'arrière-plan différente pour chaque élément, afin que vous puissiez voir comment votre mise en page change avec des paramètres tels que gravité, layout_gravity ou autres.

peter.bartos
la source
Merci, cela a fonctionné, il faut juste un peu de temps pour valider votre réponse!
Tsunaze le
Oui c'est vrai. Mais je pense que si le TextView a plus d'une ligne. Parce qu'avec seulement 1 ligne de texte non complète, le TextView ne remplira pas la mise en page horizontalement
peter.bartos
Vous pouvez éviter cela en définissant l'android de TextView: layout_width = "fill_parent"
peter.bartos
2
À ne pas confondre avec android:layout_gravity. Doh! :)
Joshua Pinter
29

utiliser de cette façon

txt.setGravity(Gravity.CENTER);
bhargavkumar040
la source
21

utiliser de cette façon en xml

   <TextView
        android:id="@+id/myText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Time is precious, so love now."
        android:gravity="center"
        android:textSize="30dp"
        android:textColor="#fff"
        />
Sakshi
la source
7

Vous pouvez utiliser les éléments suivants:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp">

 <TextView
        android:id="@+id/textview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Your text"
        android:typeface="serif" />
</LinearLayout>

La mise en page doit être relative pour que la propriété "center" soit utilisée.

gsb
la source
5

L'ajout android:gravity="center"de votre TextView fera l'affaire (quelle que soit la mise en page parent Relative/Linear)!

De plus, vous devez éviter d'utiliser dp pour la taille de la police. Utilisez plutôt sp.

Divya
la source
3

ajouter layout_gravity et gravité avec la valeur centrale sur TextView

<TextView
    android:text="welcome text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    />
Mubin
la source
2

Ajoutez simplement ces 2 lignes;

android:gravity="center_horizontal"
android:textAlignment="center"
Ramandeep Singh
la source
1
android:layout_gravity="center"

ou

android:gravity="center"

les deux fonctionnent pour moi.

Dinith
la source