J'ai un TextView
dans mon application. Je veux aligner le texte à droite. J'ai essayé d'ajouter:
Android:gravity="right"
Mais ça ne marche pas pour moi.
Que pourrais-je faire de mal?
Je pense que vous faites ceci: Android:layout_width = "wrap_content"
Si tel est le cas, procédez comme suit: Android:layout_width = "match_parent"
En général, Android:gravity="right"
est différent de Android:layout_gravity="right"
.
Le premier affecte la position du texte lui-même dans la vue. Par conséquent, si vous voulez que le texte soit aligné à droite, alors layout_width=
doit être "fill_parent"
ou "match_parent"
.
La seconde affecte la position de la vue dans son parent, autrement dit, elle aligne l'objet lui-même (zone d'édition ou vue texte) dans la vue parent.
La meilleure solution est celle qui est la plus simple et celle qui modifie moins le comportement de votre code.
Que faire si vous ne pouvez résoudre ce problème qu’avec 2 propriétés sur votre TextView
?
Au lieu de devoir changer votre LinearLayout
Propriétés qui peuvent peut-être modifier le comportement de LinearLayout
enfants?
De cette manière, il n’est pas nécessaire de modifier les propriétés et le comportement de LinearLayout
, il vous suffit d’ajouter les deux propriétés suivantes à votre cible TextView
:
Android:gravity="right"
Android:textAlignment="gravity"
Quoi de mieux que de changer uniquement votre cible pour résoudre votre solution au lieu d'avoir une chance de causer un autre problème à l'avenir, en modifiant votre père cible? Pensez-y :)
Android:layout_gravity
est utilisé pour aligner la vue texte par rapport à la mise en page parent. Android:gravity
est utilisé pour aligner le texte à l'intérieur de la vue texte.
Êtes-vous sûr de vouloir aligner le texte de la vue avec la droite ou voulez-vous déplacer la vue elle-même vers la droite par rapport à la disposition parente ou essayez-vous de réaliser les deux
L'extrait de code suivant:
Android:textAlignment="textEnd"
Android:layout_gravity="end"
fonctionne très bien pour moi
Au cas où quelqu'un aurait encore besoin
Android:gravity="end"
Assurez-vous que vous n'utilisez pas Android:layout_width="wrap_content"
si c'est le cas, il ne sera pas en mesure de régler la gravité car vous ne disposez pas de suffisamment d'espace pour que le texte s'aligne. Utilisez plutôt Android:layout_width="fill_parent"
Android:gravity="right"
Il est essentiellement utilisé dans la disposition linéaire. Vous devez donc définir la largeur de TextView ou bien EditText comme
Android:layout_width = "match_parent"
et
Lorsque vous travaillez en mode relatif, utilisez
Android:layout_alignParentRight="true"
Si c'est dans RelativeLayout
vous pouvez utiliser Android:layout_toRightOf="@id/<id_of_desired_item>"
O
Si vous souhaitez vous aligner sur le coin right
de l'appareil, placez Android:layout_alignParentRight="true"
Faites le (LinearLayout) Android:layout_width="match_parent"
et le TextView Android:layout_gravity="right"
Laissez-moi vous expliquer le concept de gravité en utilisant WEB car beaucoup de développeurs le savent bien.
Android_layout_gravity
se comporte float:left|right|top|bottom
Alors que Android_gravity
fonctionne comme text_align:centre|left|right
Dans Android float correspond à Android_layout_gravity et text_align: à Android_gravity.
Et Android_layout_gravity s'applique par rapport au parent. Où, comme Android_gravity, s'applique à son contenu enfant ou interne.
Remarque Android_gravity ne fonctionne que lorsque sa vue est match_parent (lorsqu'elle dispose d'un espace au centre).
Ci-dessous fonctionne pour moi:
<TextView
Android:id="@+id/tv_username"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Sarah" />
<TextView
Android:id="@+id/tv_distance"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBottom="@+id/tv_username"
Android:layout_alignParentEnd="true"
Android:layout_toEndOf="@+id/tv_username"
Android:text="San Marco"
Android:textAlignment="viewEnd" />
Veuillez noter les réglages Android:layout_alignParentEnd
et Android:textAlignment
du second TextView.
Vous pouvez utiliser:
Android:layout_alignParentRight="true"
Android:layout_centerVertical="true"
cela devrait servir le but
Android:textAlignment="textStart"
Dans mon cas, j’utilisais Relative Layout
pour un emptyString
Après avoir lutté pendant une heure. Seulement cela a fonctionné pour moi:
Android:layout_toRightOf="@id/welcome"
Android:layout_toEndOf="@id/welcome"
Android:layout_alignBaseline="@id/welcome"
layout_toRightOf
ou layout_toEndOf
les deux fonctionnent, mais pour mieux le supporter, j'ai utilisé les deux.
Pour être plus clair:
C'est ce que j'essayais de faire:
Et ce fut la sortie de l'émulateur
Mise en page:
<TextView
Android:id="@+id/welcome"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="16dp"
Android:layout_marginTop="16dp"
Android:text="Welcome "
Android:textSize="16sp" />
<TextView
Android:id="@+id/username"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@id/welcome"
Android:layout_toRightOf="@id/welcome"
Android:text="@string/emptyString"
Android:textSize="16sp" />
Notez que:
Android:layout_width="wrap_content"
fonctionneGravity
n'est pas utilisé<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<TextView
Android:id="@+id/tct_postpone_hour"
Android:layout_width="match_parent"
Android:layout_height="50dp"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:layout_gravity="center"
Android:gravity="center_vertical|center_horizontal"
Android:text="1"
Android:textSize="24dp" />
</RelativeLayout>
fait en sorte que le numéro un soit aligné horizontalement et verticalement au centre.
J'ai également rencontré le même problème et pensé que le problème se posait car layout_width de TextView avait wrap_content. Vous devez avoir layout_width comme match_parent et Android: gravity = "gravity"
essayez d'ajouter Android:gravity="center"
dans TextView
J'ai utilisé l'attribut "layout_alignRight" dans mon cas, dans le texte son:
Android:layout_alignRight="@+id/myComponentId"
Si vous souhaitez ajouter une marge droite, définissez simplement l'attribut "Layout_Margin Right" sur "20dp", par exemple, dans le texte:
Android:layout_marginRight="20dp"