web-dev-qa-db-fra.com

Aligner le texte à droite dans Android TextView

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?

205
Bishan

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"

183
a fair player

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.

149
wiztrail

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 :)

77
Paulo Roberto Rosa

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

20
rogerstone

L'extrait de code suivant:

Android:textAlignment="textEnd"
Android:layout_gravity="end"

fonctionne très bien pour moi

10
Fey Agape

Au cas où quelqu'un aurait encore besoin

Android:gravity="end"
8
npk

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"

8
Lalit Poptani
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"
7
Kushal Ramola

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"

5
user2342517

Faites le (LinearLayout) Android:layout_width="match_parent" et le TextView Android:layout_gravity="right"

5
Augustus Francis

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).

4
Xar E Ahmer

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.

3
David Cheung

Vous pouvez utiliser:

    Android:layout_alignParentRight="true"
    Android:layout_centerVertical="true"
2
Pablo

cela devrait servir le but

Android:textAlignment="textStart"

2
masoud Cheragee

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:

enter image description here

Et ce fut la sortie de l'émulateur

enter image description here

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:

  1. Android:layout_width="wrap_content" fonctionne
  2. Gravity n'est pas utilisé
1
Rohit Sharma
<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.

1
Alp Altunel

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"

1
Arup Saha

essayez d'ajouter Android:gravity="center" dans TextView

0
TheGreenGoblen

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"
0
Laurent