Comment centrer le texte horizontalement et verticalement dans un TextView?

comment centrer le texte horizontalement et verticalement dans un TextView , de sorte qu'il apparaisse exactement au milieu du TextView dans Android ?

1727
demandé sur Alexander Abakumov 2009-01-11 03:27:55

30 réponses

je suppose que vous utilisez la disposition XML.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

vous pouvez également utiliser la gravité center_vertical ou center_horizontal selon vos besoins.

et comme @stealthcopter a commenté en java: .setGravity(Gravity.CENTER);

2702
répondu Bill 2018-07-10 16:11:32
android:gravity="center" 

Cela fera l'affaire

405
répondu Jean 2015-03-22 14:27:07

vous pouvez également le configurer dynamiquement en utilisant:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
273
répondu zeevb 2009-11-21 12:25:56
android:layout_centerInParent="true"

cela fonctionne lorsqu'il est utilisé avec une sortie relative où la hauteur et la largeur du layout sont réglées à wrap_content.

100
répondu itherese 2011-11-11 03:33:26

Vous pouvez également utiliser la combinaison:

android:gravity="left|center"

alors, si la largeur de textview est supérieure à" fill_parent "le texte sera toujours aligné à gauche (pas centré comme avec gravity mis seulement à"center").

69
répondu Szorstki 2013-07-26 08:36:05

appliquer la gravité:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

pour vertical:

txtView.setGravity(Gravity.CENTER_VERTICAL);

en XML:

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>
45
répondu Gaganpreet Singh 2015-02-17 11:10:19

si vous utilisez TableLayout assurez-vous de régler la gravité des TableRows au centre, aussi. Sinon il ne fonctionnera pas. Au moins, ça ne marchait pas avec moi jusqu'à ce que je mette la gravité de la table au centre.

par exemple, comme ceci:

<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">        
    <TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>        
</TableRow>
36
répondu Maverick1st 2014-05-13 04:49:09

vous devez régler TextView Gravity (centre Horizontal et centre Vertical) comme ceci:

android:layout_centerHorizontal="true"   

et

android:layout_centerVertical="true"

et en utilisant dynamiquement:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
34
répondu NagarjunaReddy 2014-05-13 04:49:52

Il y a deux façons de le faire.

le premier dans le code XML. Vous devez prêter attention à L'attribut Gravity . Vous pouvez également trouver cet attribut dans L'éditeur graphique; il peut être plus facile que L'éditeur XML.

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text"
/>

Pour votre scénario spécifique, les valeurs de gravité sera:

center_vertical|center_horizontal

Dans l'éditeur graphique, vous trouverez toutes les valeurs possibles, voir même de leurs résultats.

33
répondu Cristiano Guerra 2016-09-27 13:01:40

à mon avis,

android:gravity="center"

est mieux que

android:layout_centerInParent="true"

ce qui est mieux que,

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

au moins pour formater le texte.

30
répondu epicness42 2013-01-12 04:40:21

Pour Présentation Linéaire: Dans XML utiliser quelque chose comme ceci

<TextView  
    android:id="@+id/textView1"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text goes here"
/>

pour faire ceci à l'heure d'exécution utilisez quelque chose comme ceci dans votre activité

TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

une Relative Mise en page: l'utilisation de XML quelque chose comme cela

<TextView  
    android:id="@+id/textView1"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_centerInParent="true"
    android:text="Your Text goes here"
/>

pour faire ceci à l'heure d'exécution utilisez quelque chose comme ceci dans votre activité

TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
27
répondu Karthikeyan 2016-01-19 06:33:00

utiliser dans le fichier XML.

fichier de Mise en page

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:text="@string/stringtext"/>

ou:

utilisez ceci dans la classe Java

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
22
répondu venu 2014-05-13 04:57:25

utilisez ceci pour la disposition relative

android:layout_centerInParent="true"

et pour un autre agencement

android:gravity="center" 
19
répondu 2013-10-11 11:08:21

lors de L'utilisation de gravity works pour TextView, il y a une méthode alternative implémentée dans le niveau 17 de L'API -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

ne sait pas la différence, mais ça marche aussi. Toutefois, seulement pour le niveau D'API 17 ou plus.

15
répondu noob 2013-08-24 20:50:50

dans RelativeLayout , il sera agréable avec elle.

et un autre Button et tout ce que vous pouvez ajouter.

ce qui suit me va très bien.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ff314859"
    android:paddingLeft="16dp"
    android:paddingRight="16dp">
    <TextView 
        android:id="@+id/txt_logo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="your text here"
        android:textSize="30dp"
        android:gravity="center"/>

        ...other button or anything else...

</RelativeLayout>
12
répondu Yuda Prawira 2015-04-20 15:43:03

si TextView's hauteur et largeur sont wrap content alors le texte dans le TextView doit toujours être centré. Mais si la largeur TextView's est match_parent et la hauteur est match_parent ou wrap_content alors vous devez écrire le code ci-dessous:

For RelativeLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" 
        android:text="Hello World" />

</RelativeLayout>

For LinearLayout:

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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hello World" />

</LinearLayout>
12
répondu Avijit Karmakar 2017-08-12 15:15:59

la façon la plus facile (qui est étonnamment mentionnée seulement dans les commentaires, donc pourquoi je poste comme une réponse) est:

textview.setGravity(Gravity.CENTER)
11
répondu user1 2015-12-15 12:38:02

vous pouvez simplement définir le gravity de votre textview en CENTER .

11
répondu note-knotz 2016-09-27 13:02:15

si vous essayez de centrer le texte sur une TableRow dans une TableLayout, voici comment j'ai obtenu ceci:

<TableRow android:id="@+id/rowName"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:padding="5dip" >
    <TextView android:id="@+id/lblSomeLabel"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:gravity="center"
              android:layout_width="0dp"
              android:layout_weight="100"
              android:text="Your Text Here" />
</TableRow>
9
répondu dyslexicanaboko 2012-07-15 02:14:08

Voici ma réponse que j'avais utilisé dans mon application. Il montre le texte au centre de l'écran.

<TextView
    android:id="@+id/txtSubject"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/subject"
    android:layout_margin="10dp"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge" />
9
répondu Md. Naushad Alam 2014-05-13 04:56:27

si vous utilisez la disposition Relative:

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_centerInParent="true"/>

si vous utilisez LinearLayout""

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_gravity="center"/>
9
répondu Niranjan 2015-11-15 06:33:26

Comme beaucoup de réponses suggèrent ci-dessus fonctionne très bien.

android:gravity="center"

si vous voulez le centrer juste verticalement:

android:gravity="center_vertical"

ou juste horizontalement:

android:gravity="center_horizontal"
7
répondu rgamber 2013-07-04 20:09:04

simplement, dans votre fichier XML, mettez la gravitation textview au centre:

<TextView
    android:gravity="center" />
6
répondu Mansoor Ahmad Samar 2014-05-13 04:54:11

la hauteur et la largeur du TextView sont du contenu enveloppé, puis le texte dans le textview est toujours centré, puis faites le centre dans sa disposition parente en utilisant:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello.."/>
</RelativeLayout>

pour LinearLayout aussi le code est le même :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello.."/>
</LinearLayout>

et pro-grammaticalement parent est RelativeLayout code java au moment de l'exécution, utilisez quelque chose comme ceci dans votre activité

TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
6
répondu Attiff 2016-03-07 13:42:51

Vous pouvez le faire comme ceci pour obtenir un texte centré

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />
6
répondu Kamlakar Kate 2017-06-30 09:27:32

nous pouvons y parvenir de plusieurs façons: -

XML method 01

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center_vertical|center_horizontal"
    android:text="@strings/text"
/>

XML method 02

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@strings/text"
/>

XML method 03

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center"
    android:text="@strings/text"
/>

XML method 04

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerInParent="true"
    android:text="@strings/text"
/>

méthode Java 01

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

méthode Java 02

textview.setGravity(Gravity.CENTER);

méthode Java 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
6
répondu ArghadipDasCEO 2018-06-14 10:32:20

android:gravity="center_horizontal" pour aligner le centre du texte horizontalement. android:gravity="center_vertical" pour aligner le centre de texte verticalement. android:gravity="center" pour aligner le centre du texte à la fois verticalement et horizontalement.

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />
4
répondu Anil 2016-05-20 10:18:11

Essayer de cette façon, il va travailler

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal|center_vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center" />

</LinearLayout>
4
répondu Gabriel Eduardo Toledo 2016-07-28 07:03:10

utilisez le code ci-dessous en xml il a fonctionné pour moi vous pouvez changer l'orientation il sera au centre

<LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:background="@color/colorPrimaryDark"
        android:gravity="center"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/id_text"
            android:layout_width="wrap_content"
            android:textSize="18sp"
            android:textColor="@android:color/white"
            android:textStyle="normal"
            android:layout_height="wrap_content"
            android:text="centre me"/>
    </LinearLayout>
3
répondu koteswara D K 2016-12-07 10:26:56

TextView gravity fonctionne selon la disposition de votre parent.

LinearLayout :

si vous utilisez LinearLayout, vous trouverez deux attributs gravity android: gravity & android: layout_gravity

android: gravity: représenter la potion de mise en page du texte interne de TextView tandis que android : layout_gravity: représente la position de TextView dans la vue parent.

enter image description here

si vous voulez placer le texte horizontalement et verticalement centre, puis utiliser le code ci-dessous

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center_horizontal"
        android:layout_gravity="center_vertical"
        android:layout_height="wrap_content"
    />
</LinearLayout>

RelativeLayout :

en utilisant RelativeLayout vous pouvez utiliser la propriété ci-dessous dans TextView

android:gravity="center" pour le texte centre TextView.

android: gravity= "center_horizontal" texte intérieur si vous voulez horizontalement centré.

android: gravity=" center_vertical " texte interne si vous voulez verticalement centré.

android: layout_centerInParent= "true" si vous voulez TextView en position centrale de la vue parent. android:layout_centerHorizontal= "true" si vous voulez TextView dans le centre horizontal de la vue parent. android:layout_centerVertical= "true" si vous voulez TextView dans le centre vertical de la vue parent.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content"
    />
</RelativeLayout>
3
répondu Alpesh Sorathiya 2017-10-27 13:08:01