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
?
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);
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 une sortie relative où la hauteur et la largeur du layout sont réglées à wrap_content.
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").
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 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>
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);
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.
à 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.
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);
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);
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.
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>
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>
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)
vous pouvez simplement définir le gravity
de votre textview en CENTER
.
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>
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" />
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 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"
simplement, dans votre fichier XML, mettez la gravitation textview au centre:
<TextView
android:gravity="center" />
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);
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" />
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);
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" />
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>
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>
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.
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>