Réponses:
Je pense que vous faites ceci: android:layout_width = "wrap_content"
Si c'est le cas, faites ceci: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, donc si vous voulez qu'il soit aligné à droite, alors layout_width=
devrait être soit "fill_parent"
ou "match_parent"
.
La seconde affecte la position de la vue à l'intérieur de son parent, en d'autres termes - l'alignement de l'objet lui-même (zone d'édition ou vue texte) à l'intérieur de la vue parent.
La meilleure solution est celle qui est la plus simple et celle qui modifie le moins le comportement de votre code .
Et si vous ne pouvez résoudre ce problème qu'avec 2 propriétés sur votre TextView
?
Au lieu de devoir modifier vos LinearLayout
propriétés, cela peut peut-être modifier le comportement des LinearLayout
enfants?
De cette façon, vous n'avez pas besoin de changer LinearLayout
propriétés et le comportement, 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 provoquer un autre problème à l'avenir, en modifiant votre père cible? Pensez-y :)
TextView
propriété? - Vous pouvez vérifier la propriété de la référence ici: developer.android.com/reference/android/view/…
android:layout_gravity
est utilisé pour aligner la vue texte par rapport à la disposition parent.
android:gravity
est utilisé pour aligner le texte à l'intérieur de la vue texte.
Êtes-vous sûr que vous essayez d'aligner le texte à l'intérieur de la vue de texte vers la droite ou voulez-vous déplacer la vue de texte elle-même vers la droite par rapport à la disposition parent ou essayez-vous de réaliser les deux
Assurez-vous que vous n'utilisez pas android:layout_width="wrap_content"
si c'est le cas, il ne sera pas en mesure de définir la gravité car vous n'avez pas assez d'espace pour aligner le texte. Utilisez plutôtandroid: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 EditText comme
android:layout_width = "match_parent"
et
Lorsque vous travaillez dans la mise en page relative, utilisez
android:layout_alignParentRight="true"
Faire le (LinearLayout) android:layout_width="match_parent"
et le TextViewandroid:layout_gravity="right"
Si c'est le cas, RelativeLayout
vous pouvez utiliserandroid:layout_toRightOf="@id/<id_of_desired_item>"
Ou
Si vous souhaitez aligner sur le right
coin de l'appareil, l'endroitandroid:layout_alignParentRight="true"
Permettez-moi d'expliquer le concept de gravité en utilisant WEB car beaucoup de développeurs en sont conscients.
android_layout_gravity
se comporte float:left|right|top|bottom
Alors que android_gravity
travailler commetext_align:centre|left|right
Dans Android float est android_layout_gravity et text_align: est android_gravity.
Et android_layout_gravity s'applique par rapport au parent. où as android_gravity s'applique à son contenu enfant ou intérieur.
Remarque android_gravity ne fonctionne que lorsque sa vue est match_parent (lorsqu'il a de l'espace pour centrer).
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 paramètres android:layout_alignParentEnd
et les android:textAlignment
paramètres du deuxième TextView.
cela devrait servir le but
android:textAlignment="textStart"
Dans mon cas, j'utilisais Relative Layout
pour unemptyString
Après avoir lutté là-dessus 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 les layout_toEndOf
deux fonctionne, mais pour mieux le supporter, j'ai utilisé les deux.
Pour être plus clair:
C'est ce que j'essayais de faire:
Et c'était la sortie de l'émulateur
Disposition:
<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" />
Remarquerez que:
android:layout_width="wrap_content"
travauxGravity
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 aligner le numéro un au centre à la fois horizontal et vertical.
essayez d'ajouter android:gravity="center"
dansTextView
J'ai utilisé l'attribut "layout_alignRight" dans mon cas, dans le texte c'est:
android:layout_alignRight="@+id/myComponentId"
Si vous voulez ajouter une marge droite, il suffit de définir l'attribut "Layout_Margin Right" sur "20dp" par exemple, dans le texte c'est:
android:layout_marginRight="20dp"