Comment centrer le texte horizontalement et verticalement dans un TextView
, afin qu'il apparaisse exactement au milieu du TextView
in Android
?
Comment centrer le texte horizontalement et verticalement dans un TextView
, afin qu'il apparaisse exactement au milieu du TextView
in Android
?
Réponses:
Je suppose que vous utilisez une 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 l'a commenté @stealthcopter en java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Il apparaît toujours à l'extrême gauche de l'écran. :(
android:layout_gravity="center"
, ce qui fait autre chose.
android:gravity="center"
Ça fera l'affaire
Vous pouvez également le configurer dynamiquement en utilisant:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Cela fonctionne lorsqu'il est utilisé avec un RelativeLayout où la hauteur et la largeur de la disposition sont définies sur wrap_content.
TextView
. Le texte sera pleine largeur et multiligne ET justifié à gauche dans le TextView
. Il apparaîtra justifié à gauche sur l'écran. Vous devez utiliser la "gravité" comme spécifié dans les autres réponses.
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"
/>
Il y a deux façons de le faire.
Le premier du code XML. Vous devez faire attention à l' Gravity
attribut. Vous pouvez également trouver cet attribut dans l'éditeur graphique; il peut être plus facile que l'EDITEUR 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é seront:
center_vertical|center_horizontal
Dans l'éditeur graphique, vous trouverez toutes les valeurs possibles, voir même leurs résultats.
Si vous utilisez TableLayout, assurez-vous également de régler la gravité des TableRows au centre. Sinon, cela ne fonctionnera pas. Au moins, cela n'a pas fonctionné avec moi tant que je n'ai pas réglé la gravité du TableRow 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>
Vous devez définir TextView Gravity (Center Horizontal & Center 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);
layout_centerhorizontal
et layout_centervertical
par layout_centerHorizontal
et layout_centerVertical
("H" et "V" en majuscules, sinon cela ne fonctionnera pas).
À 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 la mise en forme du texte.
Pour la mise en page 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 au moment de l'exécution, utilisez quelque chose comme ça dans votre activité
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Pour la mise en page relative: en XML, utilisez quelque chose comme ça
<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 au moment de l'exécution, utilisez quelque chose comme ça 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);
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 une disposition relative
android:layout_centerInParent="true"
et pour une autre mise en page
android:gravity="center"
Si la TextView's
hauteur et la largeur sont wrap content
alors le texte dans le TextView
toujours être centré. Mais si la TextView's
largeur est match_parent
et la hauteur est match_parent
ou wrap_content
alors 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>
Tout en utilisant la gravité fonctionne pour TextView, il existe une autre méthode implémentée dans le niveau 17 de l'API -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Je ne connais pas la différence, mais ça marche aussi. Cependant uniquement pour le niveau d'API 17 ou supérieur.
En RelativeLayout
, ce sera sympa avec ça.
Et un autre Button
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>
Vous pouvez simplement définir le gravity
de votre affichage de texte dans CENTER
.
Si vous essayez de centrer du texte sur un TableRow dans un 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>
Utilisation android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
Voici ma réponse que j'avais utilisée dans mon application. Il affiche du 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 mise en page 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"/>
Simplement, dans votre fichier XML, réglez la gravité textview au centre:
<TextView
android:gravity="center" />
Vous pouvez faire comme ça pour centrer le texte
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
La hauteur et la largeur du TextView sont un contenu enveloppé, puis le texte dans le texte est toujours centré, puis centre dans sa disposition parent 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, le code est également 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 le code java RelativeLayout au moment de l'exécution utiliser quelque chose comme ça 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);
Nous pouvons y parvenir avec ces multiples façons: -
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 gravité TextView fonctionne selon la disposition de votre parent.
Disposition linéaire :
Si vous utilisez LinearLayout, vous trouverez deux attributs de gravité android: gravity et android: layout_gravity
android: gravity: représente 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.
Si vous souhaitez définir le texte horizontalement et verticalement au centre, utilisez 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 intérieur 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 au centre horizontal de la vue parent. android: layout_centerVertical = "true" si vous voulez que TextView soit au 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>
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>