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>
使用以下资源:
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>