我有一个简单的TextView,应该在ltr系统语言环境下具有android:gravity="left"
,在rtl系统语言环境下具有android:gravity="right"
。
显然的选择是:android:gravity="start"
,但这样英文文本将始终左对齐,希伯来文则右对齐。
以下是android:gravity="start"
的效果:
LTR语言环境:
| לורם| // incorrect
|test | // correct
RTL语言环境:
| לורם| // correct
|test | // incorrect
它应该看起来像这样:
LTR语言环境:
|לורם |
|test |
RTL语言环境:
| לורם|
| test|
不使用修改后的xml文件和layout-ldrtl文件夹,是否有可能实现这一点?这将使开发变得更加复杂,因为我必须两次编辑很多布局文件...
编辑: 对于API 17+的解决方案就足够了。我写了系统语言环境,但实际上我允许用户像这样更改应用程序语言:
Configuration configuration = context.getResources().getConfiguration();
configuration.setLayoutDirection(selectedLocale);
configuration.locale = selectedLocale;
context.getResources().updateConfiguration(configuration, context.getResources().getDisplayMetrics());
如果这个语言环境能被考虑在RTL<->LTR的选择中,那就太棒了。
android:textDirection="locale"
,它将根据系统区域设置对齐,但不是根据“应用程序区域设置”对齐,可以查看我的编辑... 对于混淆表示抱歉,我试图简化... - agrajag