Вопрос по right-to-left, android-textview, android – Как сделать направление текста справа налево

40

Я хочу написать текст (справа налево, т.е. на арабском языке) в TextView. Но я хочу сделать направление написания текста справа налево.gravity:rightвыровняйте текст только вправо. Я хочу выровнять текст справа налево (чтобы слова и цифры отображались в указанном порядке в строке). как ?

Я думаю, что, как я уже сказал, я не пробовал, но это похоже на правильный подход Genia S.
как установить Попробуйте добавить символ ПРАВО-НА-ЛЕВЫЙ МАРК (\ u200F) ?? такое это & gt; & gt; tv.setText (& quot; & quot; Мой арабский текст & quot;); Adham
Я считаю, что это отвечает на ваш вопрос. Он помечен как правильный ... Я не проверял его, чтобы убедиться, что он * действительно правильный, но похоже, что он должен работать.stackoverflow.com/questions/6302221/… Genia S.

Ваш Ответ

12   ответов
2

android:textDirection="rtl"

0

е в дополнение к предлагаемым решениям мне также пришлось заменить английский язык & quot; символ с RTL (в моем случае ивритом) представлением такого символа & # x5F4;

47

который можно использовать в более старых версиях Android и который может использоваться в любом месте строки, так что это удобнее даже в последней версии Android, состоит в том, чтобы включитьright-to-left mark или дажеleft-to-right mark в строке, когда это необходимо:

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

Вот как это происходит:

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

Хорошая вещь об этом методе - вы можете использовать его даже послеpunctuation like (,{,[,! которые расположены неправильно неправильно! Примеры:

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

посмотри как! правильно расположен во второй строке, на самом деле после него есть RLM, и вы можете скопировать и вставить его, даже если он невидим.

Вторая хорошая вещь, как вы видели, это то, что вы можете использовать этот метод (эти коды символов) в любой системе, которая поддерживает RTL, например, браузеры, Word и так далее.

спасение жизни. Спасибо
@SaeedNeamati Эти символы добавляются в UTF именно для этой цели, поэтому до тех пор, пока движок рендеринга учитывает их, не будет никакого побочного эффекта, как в случае с Android. Единственное, в некоторых шрифтах для этих кодов существует глиф представления, и они отображаются при использовании этих символов. Вы должны удалить их глифы, используя некоторые инструменты редактора шрифтов, такие как создатель шрифта.
молодец спасибо братан
Это добилось цели. Хорошо сделано. Любой побочный эффект?
0

как показано ниже в моем коде XML, я получил текст справа налево с правильной пунктуацией. Но это не идеальное решение для многоязычного текста:

android:textDirection="ltr"
android:gravity="right"

установка ltr исправляет проблемы с пунктуацией, такие как наличие точки справа, а не слева.

Атрибут гравитации делает поток текста справа налево.

0

Don't use layoutDirection

  <TextView
     android:id="@+id/viewCountTv"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:textDirection="anyRtl"
     android:gravity="center"/>
5

      android:textDirection="rtl"

Но в случае полей пароля этого недостаточно, тогда следуйте этому;

     android:textDirection="rtl"
     android:gravity="right"
Для меня было важно использоватьandroid:textDirection="anyRtl" вместо того, чтобы просто использоватьrtl в дополнение к вашему предложению.
6

 textview.setTextDirection(View.TEXT_DIRECTION_RTL);

или же

 textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
Работает хорошо! Начиная с API 17
2

android:gravity="right"
android:textDirection="rtl"

PS:android:textDirection требуется уровень API 17

8

установить эту строку вxml для просмотра текста:

 android:textDirection="locale"
У меня есть отдельные XML-макет для арабского дизайна
работал на меня для арабских текстов
Это не работает
и устанавливает текст как для арабского ... myTextView.settext (& quot; \ u200F "+" quot; text ")
18

android:gravity="right" работал.

это приведет к путанице в смешанном тексте, нумерации, скобках и т. д., безусловно, используйте android: gravity = & quot; right & quot; /увидеть:android-developers.blogspot.co.il/2013/03/…
Подскажите, пожалуйста, почему текстовое направление не работает?
1

android:layoutDirection="rtl" а такжеandroid:textAlignment="viewStart" сделать просмотр текста справа налево.

42

и все будет отлично работать, он автоматически обнаружит ваш текст и изменится соответственно

android:textDirection="anyRtl"
показывает ошибку этот код
Если вышеприведенное не сработало, попробуйтеandroid:textAlignment="viewStart"
все в порядке ,,, он показывал ошибку с ADT & lt; 20
Attribute "textDirection" is only used in API level 17 and higher (current min is 13)
@ Исключительно, какую ошибку вы получаете?

Похожие вопросы