我有一个简单的TextView,对于ltr系统区域设置应该有android:gravity="left"
,对于rtl系统区域设置应该有android:gravity="right"
。在TextView中使用语言环境(ltr/rtl)来处理重力
明显的选择是:android:gravity="start"
,然后例如英文文本将始终左对齐,希伯来文右对齐。
下面是它的外观与android:gravity="start"
:
LTR区域设置:
| לורם| // incorrect
|test | // correct
RTL语言环境:
| לורם| // correct
|test | // incorrect
它应该看起来像:
LTR区域设置:
|לורם |
|test |
RTL语言环境:
| לורם|
| test|
是否有可能做到这一点不使用布局ldrtl文件夹修改xml文件?这会使开发复杂化很多,因为我将不得不编辑大量布局文件两次......
编辑: API 17+的解决方案已足够。 我写的系统区域设置,但实际上我允许用户更改应用程序语言像:
Configuration configuration = context.getResources().getConfiguration();
configuration.setLayoutDirection(selectedLocale);
configuration.locale = selectedLocale;
context.getResources().updateConfiguration(configuration, context.getResources().getDisplayMetrics());
所以这将是巨大的,如果这个区域将被视为对RTL < - >升的选择。
英文文本呈现从左到右我认为重力开始 – Bhargav
是的,这正是我的问题。 RTL语言环境设置时是否有强制RTL的方法? – agrajag
已尝试添加文本方向属性?但它只适用于api 17+我认为 – Bhargav