小编agr*_*jag的帖子

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

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

显而易见的选择是:android:gravity="start"但是,例如,英语文本将始终左对齐,希伯来语右对齐.

以下是它的外观android:gravity="start":

LTR语言环境:

|          ????|   // incorrect
|test           |  // correct
Run Code Online (Sandbox Code Playgroud)

RTL语言环境:

|          ????|  // correct
|test           |  // incorrect
Run Code Online (Sandbox Code Playgroud)

它看起来应该是这样的:

LTR语言环境:

|????           |  
|test            | 
Run Code Online (Sandbox Code Playgroud)

RTL语言环境:

|          ????|  
|           test| 
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用带有修改的xml文件的layout-ldrtl文件夹的情况下执行此操作?这会使开发复杂化很多,因为我必须两次编辑很多布局文件...

编辑: API 17+的解决方案就足够了.我编写了系统区域设置,但实际上我允许用户更改应用程序语言:

Configuration configuration = context.getResources().getConfiguration();
configuration.setLayoutDirection(selectedLocale);
configuration.locale = selectedLocale;
context.getResources().updateConfiguration(configuration, context.getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

因此,如果将此区域设置考虑用于rtl < - > ltr选项,那将会很棒.

layout android right-to-left

19
推荐指数
3
解决办法
9998
查看次数

标签 统计

android ×1

layout ×1

right-to-left ×1