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:right
alignera 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 ?
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.
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"
Trop tard, mais le Android:gravity="right"
travaillé.
définissez cette ligne dans xml pour textview:
Android:textDirection="locale"
Essayez d'utiliser
textview.setTextDirection(View.TEXT_DIRECTION_RTL);
ou
textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
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"
essayez ceci car cela a fonctionné pour moi Android:textDirection="rtl"
Ajoutez-les à votre editText:
Android:gravity="right"
Android:textDirection="rtl"
PS: Android:textDirection
nécessite l'API niveau 17
Utilisation Android:layoutDirection="rtl"
et Android:textAlignment="viewStart"
pour afficher le texte de droite à gauche.
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"/>
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 ״
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.