当前位置:  开发笔记 > Android > 正文

在TextView中使用locale(ltr/rtl)作为重力

如何解决《在TextView中使用locale(ltr/rtl)作为重力》经验,为你挑选了2个好方法。

我有一个简单的TextView,它应该android:gravity="left"用于ltr系统区域设置和android:gravity="right"rtl系统区域设置.

显而易见的选择是: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选项,那将会很棒.



1> atabouraya..:

我也有这个问题,你可以使用TextView这些属性

android:textDirection="locale"
android:textAlignment="gravity"

或者只是将它添加到styles.xml中的Base App主题`

`

这对我有用.



2> Mr. Fish..:
android:layout_    
android:textAlignment="viewStart"

如果文本视图拉伸到父宽度,则无需更改元素的重力.只需将文本与视图开始对齐,文本将移动到LTR或RTL位置,与文本内容(希伯来语或西方语言)无关.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有