Question

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

Était-ce utile?

La solution

Je suppose que vous utilisez une présentation 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é centre_vertical ou centre_horizontal en fonction de vos besoins.

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

Autres conseils

android:gravity="center" 

Cela fera l'affaire

Vous pouvez également le configurer de manière dynamique en utilisant:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"

Ceci fonctionne lorsqu'il est utilisé avec un RelativeLayout où la hauteur de la mise en page & amp; width sont définis sur wrap_content.

Vous pouvez également utiliser la combinaison suivante:

android:gravity="left|center"

Ensuite, si la largeur de la vue de texte est supérieure à " fill_parent " le texte sera toujours aligné à gauche (non centré comme dans le cas de la gravité uniquement sur le "centre").

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"        
/>

Si vous utilisez TableLayout, veillez également à définir la gravité des TableRows sur le centre. Sinon, ça ne marchera pas. Au moins, cela ne fonctionnait pas avec moi tant que je n’avais pas centré la gravité de la TableRow.

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>

Il y a deux façons de faire cela.

Le premier dans le code XML. Vous devez faire attention à l'attribut Gravity . Vous pouvez également trouver cet attribut dans l'éditeur graphique; cela peut être plus facile que XML EDITOR.

<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é seront:

center_vertical|center_horizontal

Dans l'éditeur graphique, vous trouverez toutes les valeurs possibles, voire leurs résultats.

Vous devez définir Gravité TextView (centre horizontal et vertical) comme suit:

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);

À mon avis,

android:gravity="center"

est meilleur que,

android:layout_centerInParent="true"

qui est meilleur que,

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

au moins pour le formatage du texte.

Pour la disposition linéaire: En XML, utilisez 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 ce faire, utilisez quelque chose comme ceci dans votre activité au moment de l'exécution

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

Pour la disposition relative: dans XML, utilisez quelque chose comme ceci

<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 ce faire, utilisez quelque chose comme ceci dans votre activité au moment de l'exécution

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);

À 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-le dans la classe Java

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Utilisez ceci pour la mise en page relative

android:layout_centerInParent="true"

et pour une autre mise en page

android:gravity="center" 

Lorsque vous utilisez Gravity pour TextView, il existe une autre méthode implémentée dans l'API de niveau 17 -

.
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

Vous ne connaissez pas la différence, mais cela fonctionne aussi. Cependant, uniquement pour les API de niveau 17 ou supérieur.

Si la hauteur et la largeur de TextView sont wrap content , le texte situé dans TextView sera toujours centré. Mais si la largeur de TextView est match_parent et que hauteur est match_parent ou wrap_content , vous devez écrire le code ci-dessous:

Pour RelativeLayout:

<?xml version="1.0" encoding="utf-8"?>
<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>

Pour LinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<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>

Dans RelativeLayout , ce sera bien avec cela.

Et un autre bouton et tout ce que vous pouvez ajouter.

Ce qui suit fonctionne bien pour moi.

<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>

La manière la plus simple (qui n'est étonnamment mentionnée que dans les commentaires, d'où la raison pour laquelle je poste en tant que réponse) est la suivante:

textview.setGravity(Gravity.CENTER)

Vous pouvez simplement définir la gravité de votre affichage de texte dans CENTRE .

Si vous essayez de centrer le texte sur un tableau de lignes dans un objet TableLayout, voici comment j'ai réalisé 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>

Voici la réponse que j'avais utilisée dans mon application. Il affiche 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" />

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"/>

Comme beaucoup de réponses le suggèrent ci-dessus, cela fonctionne correctement.

android:gravity="center"

Si vous voulez le centrer juste verticalement:

android:gravity="center_vertical"

ou juste horizontalement:

android:gravity="center_horizontal"

Simplement, dans votre fichier XML, définissez la gravité textview sur le centre:

<TextView
    android:gravity="center" />

Vous pouvez faire comme ceci pour que le texte soit centré

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

Nous pouvons y parvenir avec ces multiples moyens: -

  

Méthode XML 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"
/>
  

Méthode XML 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"
/>
  

Méthode XML 03

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

Méthode XML 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);

La hauteur et la largeur de TextView sont des contenus intégrés, puis le texte dans la vue texte doit toujours être centré, puis centré dans sa mise en page parent à l'aide de:

<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, le code est identique:

<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 le parent pro-grammaticalement est le code java RelativeLayout, cela lors de l'exécution utilise 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);

La gravité TextView fonctionne selon votre mise en page parent.

LinearLayout :

Si vous utilisez LinearLayout, vous trouverez deux attributs de gravité. Android: gravité & amp; android: layout_gravity

android: gravity: représente la potion de disposition du texte interne de TextView en android: layout_gravity: représente la position de TextView dans la vue parent.

 entrer la description de l'image ici

Si vous souhaitez définir du texte horizontalement & amp; centrer verticalement 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 centre de texte dans TextView.

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

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

android: layout_centerInParent = " true " si vous voulez que TextView soit au centre de la vue parent. android: layout_centerHorizontal = " true " si vous voulez que TextView soit horizontalement au centre de la vue parent. android: layout_centerVertical = " true " si vous voulez que TextView soit verticalement au centre 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>

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

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />

Essayez de cette façon, cela fonctionnera

<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>

utilisez le code ci-dessous en xml cela a fonctionné pour moi, vous pouvez changer l’orientation 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top