我有一个简单的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选项,那将会很棒 .
4 回答
我也有这个问题,你可以使用TextView这些属性
或者只是将其添加到 styles.xml 中的基本应用主题
这对我有用 .
如果文本视图拉伸到父宽度,则无需更改元素的重力 . 只需将文本与视图开始对齐,文本将移动到LTR或RTL位置,与文本内容(希伯来语或西方语言)无关 .
您可能需要一个特殊的扩展TextView类:
...并在布局中使用此类 . 如果要动态切换区域设置和所有方向,则需要重新加载布局 .
我现在正在使用这个解决方案,我更喜欢一个简单的xml解决方案,但到目前为止这似乎很小: