RTL AlertDialog 中的负数

negative number within RTL AlertDialog

使用以下资源:

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]

我通过在 EditText 字段中强制 LTR 解决了布局中的类似问题,使用:

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

但是如何在 AlertDialog.Message 内的特定 "words"(或数字)上强制执行 LTR?

注意:我在 here 中看到了一个解决方案,但我更喜欢 android 来处理格式化数字...

您可以在警报对话框中找到 "message" 文本视图,然后应用您在编辑文本中使用的相同方法来更正 LTR 问题。

考虑这个 SO 答案以找到内部文本视图:

我不确定你是否想要接收

而不是

无论如何,最简单的解决方法是插入 Unicode BIDI 覆盖标记,例如LRO:

<string name="err_field_range_hint_f">ערכים אפשריים:
    \u202D[%2$.0f .. %1$.0f]\u202C;</string>