отрицательное число в RTL AlertDialog - PullRequest
1 голос
/ 06 марта 2019

с использованием следующего ресурса:

ltr: <string name="err_field_range_hint_f">Possible values: [%1$.0f .. %2$.0f]</string> 
rtl: <string name="err_field_range_hint_f">ערכים אפשריים:
   [%2$.0f .. %1$.0f]</string>  

в следующем коде:

 _AlertDialog = new AlertDialog.Builder(this).
  setTitle(getString(R.string.title))                             
  .setMessage(getString(R.string.err_field_range_hint_f, valLow, valHigh) ) 
  .setPositiveButton(getString(R.string.ok), null)
  .show();

Я получаю [25- .. 100] вместо [-25 .. 100]

Я решил аналогичную проблему в макете с принудительным использованием LTR в полях EditText, используя:

android:inputType="numberSigned|numberDecimal" 
android:textDirection="ltr"

но как я могу принудительно вызвать LTR для определенных «слов» (или цифр) внутри AlertDialog.Message?

Примечание: я видел решение в здесь , но я бы предпочел, чтобы Android обрабатывал форматирование чисел ...

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Я не уверен, что вы хотите получить

enter image description here

, а не

enter image description here

В любом случае, самое простое решение - вставить маркеры переопределения Unicode BIDI, например LRO :

<string name="err_field_range_hint_f">ערכים אפשריים:
    \u202D[%2$.0f .. %1$.0f]\u202C;</string>  
1 голос
/ 07 марта 2019

Вы можете найти текстовое представление «message» внутри диалогового окна предупреждения, а затем применить тот же метод, который вы использовали для вашего текста редактирования, чтобы исправить проблему LTR.

Рассмотрите этот SO-ответ, чтобы найти внутреннее текстовое представление:

https://stackoverflow.com/a/35808187/3339597

...