RTL AlertDialog中的负数

问题描述 投票:1回答:2

使用以下资源:

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内的特定“单词”(或数字)上强制LTR?

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

android right-to-left
2个回答
2
投票

我不确定你想收到

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
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.