Числа внутри TextView меняются местами при форматировании в RTL - PullRequest
0 голосов
/ 31 мая 2018

Числа внутри TextView переворачиваются при форматировании в RTL.Когда числа в конце текста внутри TextView они меняются местами.Как я могу решить эту проблему программно?

Например, цифры, приведенные ниже, перевернуты:

image

Они должны отображаться следующим образом:

image

Ответы [ 3 ]

0 голосов
/ 08 августа 2019

Неправильное понимание: Цифры на языках RTL, таких как ARABIC, должны быть написаны из RTL с арабскими цифрами, чтобы избежать каких-либо проблем, например:"SMS رسالة".

Проблема и решение: Смешивание языков с более чем одним направлением требуется больше шагов, вам нужно сообщить системе "эй, это RTLслово, добавь как это в последовательность ". Так что вам может потребоваться сделать это неявно , то есть:

\u200f + تم إرسال رسالة نصية إلى + number

Рассмотрим StringBuilder: Разработчику очень больно разрабатывать что-то дляЯзык RTL с использованием плюс (+) нотации, это очень запутанно и подвержено ошибкам.

Лучший способ:

builder.append("\u061C").append(" تم إرسال رسالة نصية لـ").append("\u200E").append("+0123456789")

Рассмотрим BidiFormatter: Класс утилит для форматирования текста для отображения в потенциально противоположном контексте без искажений

Пример:

String text = "{0} تم إرسال رسالة نصية لـ ";
String phone = BidiFormatter.getInstance().unicodeWrap("+961 01 234 567");
String result = MessageFormat.format(text,phone);

Теперь result будет отформатировано правильно.

Дополнительные примеры работы BidiFormatter.

0 голосов
/ 08 августа 2019

Попробуйте это

android: supportRtl = "false" в файле манифеста

и android: gravity = "start" в вашем макете.

0 голосов
/ 31 мая 2018

установить гравитацию textview, чтобы начать

android:gravity="start"
...