Android TextView混排阿拉伯语与英文 阿语系统下显示异常
问题原因
阿拉伯语为右到左(RTL)书写体系,系统语言切换为阿拉伯语时,Android默认开启RTL布局适配,双向文本(BiDi)排版算法会自动调整混合了RTL、LTR字符的文本顺序,导致最终显示效果与XML内编写的静态字符串顺序不符。
解决方案
- 方案1:强制指定TextView文本方向(适配API 17及以上)
在对应TextView的XML布局中添加属性:
该属性会强制TextView内所有文本按左到右顺序排版,不受系统RTL设置影响,与XML编写时的预览效果完全一致。android:textDirection="ltr" - 方案2:Unicode控制字符固定顺序(全版本兼容)
在目标字符串开头添加左到右标记\u200E,修改后字符串如下:
这个不可见的Unicode标记会告知系统双向文本算法,该段内容基准排版方向为左到右,无需自动调整顺序,无需修改布局属性即可实现固定显示效果。"unit_label_text": "\u200Eمحتوى 0.4kg (€ 10.00 / 1Kg)" - 方案3:保留全局RTL适配能力的前提下,单独调整该控件排版方向
可在布局中同时添加如下两个属性:android:layoutDirection="ltr" android:textAlignment="viewStart"
内容的提问来源于stack exchange,提问作者Amsheer
相关产品推荐
相关产品推荐

