La vue textuelle doit être match_parent ou fill_parent pour que cela fonctionne. Si son contenu est enveloppé, il ne sera pas centré.
Kalel Wade
7
@KalelWade: centrer du texte dans une vue textuelle avec wrap_content n'a aucun sens. Vous envisagez peut-être de centrer une vue de texte dans une vue parent, auquel cas, vous mettez simplement cette ligne dans le parent.
Mooing Duck
@Mooing Duck Ainsi, la raison de ne pas utiliser de contenu enveloppant - cela n'a pas de sens. Mais lorsque vous copiez et collez ou que vous vous précipitez, vous ne pouvez pas mettre deux et deux ensemble. C'est pourquoi je l'ai mentionné.
Kalel Wade
1
si TextView avec une largeur et une hauteur égales à "wrap_content" est à l'intérieur de LinearLayout avec une largeur et une hauteur "match_parent", vous devez définir la disposition_gravité de Linear_layout.
Faisal Naseer
1
@MooingDuck, lorsque la hauteur est "wrap_content" et la gravité "center_vertical", il dessine dans Design (aperçu) comme centré, mais dans un appareil, il est positionné en haut. Définissez donc la hauteur "match_parent" et réglez la gravité sur "center_vertical" ou "center".
CoolMind
298
Vous pouvez également le configurer dynamiquement en utilisant:
Ou tout simplement textview.setGravity (Gravity.CENTER);
Amplify91
Quels sont les critères de jugement pour décider de la façon de choisir, d'écrire en XML ou d'écrire en fichier Java?
kenju
2
@Kenju si vous voulez qu'il soit facilement modifiable et que la valeur ne changera pas pendant l'exécution: XML. Si vous devez modifier la valeur en temps réel (par exemple, modifier l'alignement lorsque l'utilisateur appuie sur un bouton), vous ne pouvez le faire que via Java.
Gustavo Maciel
2
@ GustavoMaciel donc, fondamentalement xml à moins qu'il doive être modifié dynamiquement ... Maintenant je l'ai. Merci pour votre réponse simple et utile!
kenju
115
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.
Cela centre le TextView, pas le texte qu'il contient.
anthropomo
2
Cela ne fonctionne PAS lorsqu'il y a un retour automatique à la ligne dans le 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.
David Manpearl
83
Vous pouvez également utiliser la combinaison:
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 avec la gravité réglée uniquement sur "center").
Le premier du code XML. Vous devez faire attention à l' Gravityattribut. Vous pouvez également trouver cet attribut dans l'éditeur graphique; il peut être plus facile que l'EDITEUR XML.
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.
La sémantique du code est incorrecte. Remplacez layout_centerhorizontalet layout_centerverticalpar layout_centerHorizontalet layout_centerVertical("H" et "V" en majuscules, sinon cela ne fonctionnera pas).
yugidroid
2
layout_ * indique au parent de la vue où il veut être. Sans layout_ * indique à la vue comment placer ses composants
Pour la mise en page linéaire: en XML, utilisez quelque chose comme ceci
<TextViewandroid: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é
Pour la mise en page relative: en XML, utilisez quelque chose comme ça
<TextViewandroid: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é
Si la TextView'shauteur et la largeur sont wrap contentalors le texte dans le TextViewtoujours être centré. Mais si la TextView'slargeur est match_parentet la hauteur est match_parentou wrap_contentalors vous devez écrire le code ci-dessous:
Cela va vraiment centrer le texte dans TextView. Si vous utilisez simplement la gravité, il y a un peu de remplissage en fonction de ce qu'est le texte ... Si vous avez un petit badge cercle avec du texte au centre, par exemple, vous pouvez voir une différence très évidente.
tarrball
14
En RelativeLayout, ce sera sympa avec ça.
Et un autre Buttonet tout ce que vous pouvez ajouter.
Ce qui suit fonctionne bien pour moi.
<RelativeLayoutxmlns: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"><TextViewandroid: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 vous essayez de centrer du texte sur un TableRow dans un TableLayout, voici comment j'ai réalisé ceci:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid: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>
textAlignment = "center" ne fera pas le travail tant que TextView n'aura pas les dimensions pour match_parent
SAurabh
L'exemple @SAurabh ci-dessus fonctionne sans aucun problème.
Chathura Wijesinghe
fonctionne-t-il sans gravité par rapport à la gravité parent ou mise en page en soi? Il ne sera pas aligné sur le texte alignera le texte dans ses limites de vue, donc jusqu'à ce que textView prenne match_parent dans ce cas, il ne ressemblera pas à cela sans gravité dans sa disposition parent ou layout_gravity en lui
SAurabh
9
Voici ma réponse que j'avais utilisée dans mon application. Il affiche du texte au centre de l'écran.
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:
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
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.
Btw, une raison pour laquelle vous êtes revenu à la révision précédente? La révision que vous avez annulée est une bonne pratique afin que ce que l'éditeur a mentionné puisse aider les éditeurs de texte à encoder.
Réponses:
Je suppose que vous utilisez une disposition XML.
Vous pouvez également utiliser la gravité
center_vertical
oucenter_horizontal
selon vos besoins.et comme l'a commenté @stealthcopter en java:
.setGravity(Gravity.CENTER);
la source
android:gravity="center"
). Il apparaît toujours à l'extrême gauche de l'écran. :(android:layout_gravity="center"
, ce qui fait autre chose.Ça fera l'affaire
la source
Vous pouvez également le configurer dynamiquement en utilisant:
la source
Cela fonctionne lorsqu'il est utilisé avec un RelativeLayout où la hauteur et la largeur de la disposition sont définies sur wrap_content.
la source
TextView
. Le texte sera pleine largeur et multiligne ET justifié à gauche dans leTextView
. Il apparaîtra justifié à gauche sur l'écran. Vous devez utiliser la "gravité" comme spécifié dans les autres réponses.Vous pouvez également utiliser la combinaison:
Ensuite, si la largeur de la vue de texte est supérieure à "fill_parent", le texte sera toujours aligné à gauche (non centré comme avec la gravité réglée uniquement sur "center").
la source
Appliquer la gravité:
Pour vertical:
En XML:
la source
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.Pour votre scénario spécifique, les valeurs de gravité seront:
Dans l'éditeur graphique, vous trouverez toutes les valeurs possibles, voir même leurs résultats.
la source
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:
la source
Vous devez définir TextView Gravity (Center Horizontal & Center Vertical) comme ceci:
et
Et en utilisant dynamiquement:
la source
layout_centerhorizontal
etlayout_centervertical
parlayout_centerHorizontal
etlayout_centerVertical
("H" et "V" en majuscules, sinon cela ne fonctionnera pas).À mon avis,
est mieux que,
ce qui est mieux que,
au moins pour la mise en forme du texte.
la source
Pour la mise en page linéaire: en XML, utilisez quelque chose comme ceci
Pour ce faire au moment de l'exécution, utilisez quelque chose comme ça dans votre activité
Pour la mise en page relative: en XML, utilisez quelque chose comme ça
Pour ce faire au moment de l'exécution, utilisez quelque chose comme ça dans votre activité
la source
Utiliser dans le fichier XML.
Fichier de mise en page
ou:
Utilisez-le dans la classe Java
la source
Utilisez ceci pour une disposition relative
et pour une autre mise en page
la source
Si la
TextView's
hauteur et la largeur sontwrap content
alors le texte dans leTextView
toujours être centré. Mais si laTextView's
largeur estmatch_parent
et la hauteur estmatch_parent
ouwrap_content
alors vous devez écrire le code ci-dessous:Pour RelativeLayout:
Pour LinearLayout:
la source
Tout en utilisant la gravité fonctionne pour TextView, il existe une autre méthode implémentée dans le niveau 17 de l'API -
Je ne connais pas la différence, mais ça marche aussi. Cependant uniquement pour le niveau d'API 17 ou supérieur.
la source
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.
la source
Le moyen le plus simple (qui n'est étonnamment mentionné que dans les commentaires, d'où la raison pour laquelle je poste en réponse) est:
la source
Vous pouvez simplement définir le
gravity
de votre affichage de texte dansCENTER
.la source
Si vous essayez de centrer du texte sur un TableRow dans un TableLayout, voici comment j'ai réalisé ceci:
la source
Utilisation
android:textAlignment="center"
la source
Voici ma réponse que j'avais utilisée dans mon application. Il affiche du texte au centre de l'écran.
la source
Si vous utilisez la mise en page relative:
Si vous utilisez LinearLayout
la source
Comme de nombreuses réponses le suggèrent ci-dessus, cela fonctionne très bien.
Si vous souhaitez le centrer juste verticalement:
ou simplement horizontalement:
la source
Simplement, dans votre fichier XML, réglez la gravité textview au centre:
la source
Vous pouvez faire comme ça pour centrer le texte
la source
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:
Pour LinearLayout, le code est également le même:
et pro-grammaticalement parent est le code java RelativeLayout au moment de l'exécution utiliser quelque chose comme ça dans votre activité
la source
Nous pouvons y parvenir avec ces multiples façons: -
la source
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
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.
la source
Essayez de cette façon, cela fonctionnera
la source
En fait, nous pouvons faire mieux en excluant fontPadding.
la source