web-dev-qa-db-fra.com

Comment faire la direction du texte de droite à gauche

Je veux écrire du texte dans (langue de droite à gauche, c'est-à-dire arabe) dans un TextView. Mais je veux faire la direction d'écriture du texte de droite à gauche. gravity:rightalignera le texte à droite uniquement. Je veux justifier le texte de droite à gauche (pour faire apparaître les mots et les chiffres dans l'ordre entré dans la ligne). Comment ?

44
Adham

Une autre façon intelligente qui peut être utilisée dans les anciennes versions de Android et peut être utilisée n'importe où dans la chaîne, donc c'est plus pratique même dans la dernière version d'Android, est d'inclure le de droite à - marque gauche ou même marque de gauche à droite dans la chaîne quand c'est nécessaire:

left-to-right mark: ‎ or ‎ (U+200E)
right-to-left mark: ‏ or ‏ (U+200F)

Voici comment ça se passe:

String rtl = "Hello \u200F(سلام)";

La bonne chose à propos de cette méthode est que vous pouvez même l'utiliser après ponctuation comme (, {, [! qui sont mal positionnées! Exemples:

سلام! // wrong position
سلام!‏ // right position by adding RLM after !

regardez comment ! est positionné correctement sur la deuxième ligne, en fait il y a un RLM après, et vous pouvez copier le coller même s'il est invisible.

La deuxième bonne chose que vous avez vue, c'est que vous pouvez utiliser cette méthode (ces codes de caractères) dans n'importe quel système qui prend en charge RTL comme les navigateurs, Word, etc.

50
Ali

Il suffit de mettre cette propriété dans votre TextView et tout fonctionnera très bien, il détectera automatiquement votre texte et changera en conséquence

Android:textDirection="anyRtl"
42
RaedMarji

Trop tard, mais le Android:gravity="right" travaillé.

18
losingsleeep

définissez cette ligne dans xml pour textview:

 Android:textDirection="locale"
10
arshad shaikh

Essayez d'utiliser

 textview.setTextDirection(View.TEXT_DIRECTION_RTL);

ou

 textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
6
Iman Marashi

En cas de texte d'édition normal, cela fonctionnera

      Android:textDirection="rtl"

Mais dans le cas de champs de mot de passe, cela ne suffit pas, suivez ceci;

     Android:textDirection="rtl"
     Android:gravity="right"
6
manDroid

essayez ceci car cela a fonctionné pour moi Android:textDirection="rtl"

2
user2876982

Ajoutez-les à votre editText:

Android:gravity="right"
Android:textDirection="rtl"

PS: Android:textDirection nécessite l'API niveau 17

2
Kaaveh Mohamedi

Utilisation Android:layoutDirection="rtl" et Android:textAlignment="viewStart" pour afficher le texte de droite à gauche.

1
Armin

meilleure façon textDirection pour TextView, N'utilisez pas layoutDirection

  <TextView
     Android:id="@+id/viewCountTv"
     Android:layout_width="wrap_content"
     Android:layout_height="wrap_content"
     Android:textDirection="anyRtl"
     Android:gravity="center"/>
0
Rasoul Miri

juste ajouter ma propre expérience avec de tels problèmes. dans mon cas, en plus des solutions suggérées, j'ai également dû remplacer le caractère anglais "par la représentation RTL (dans mon cas hébreu) ​​d'un tel caractère ״

0
Liran Cohen

En utilisant étrangement les attributs comme ci-dessous dans mon code xml, j'ai obtenu un texte de droite à gauche avec une ponctuation correcte. Mais ce n'est pas une solution parfaite pour le texte multilingue:

Android:textDirection="ltr"
Android:gravity="right"

la définition de ltr corrige les problèmes de ponctuation, comme avoir un point sur le côté droit au lieu de gauche.

l'attribut gravity fait couler le texte de droite à gauche.

0
Lord Tesla