agr*_*jag 19 layout android right-to-left
我有一个简单的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选项,那将会很棒.
ata*_*aya 46
我也有这个问题,你可以使用TextView这些属性
android:textDirection="locale"
android:textAlignment="gravity"
Run Code Online (Sandbox Code Playgroud)
或者只是将它添加到styles.xml中的Base App主题`
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="colorButtonNormal">@color/colorAccent</item>
<item name="android:textAlignment">gravity</item>
<item name="android:textDirection">locale</item>
</style>`
Run Code Online (Sandbox Code Playgroud)
这对我有用.
Mr.*_*ish 27
android:layout_width="match_parent"
android:textAlignment="viewStart"
Run Code Online (Sandbox Code Playgroud)
如果文本视图拉伸到父宽度,则无需更改元素的重力.只需将文本与视图开始对齐,文本将移动到LTR或RTL位置,与文本内容(希伯来语或西方语言)无关.
我现在正在使用这个解决方案,我更喜欢一个简单的 xml 解决方案,但到目前为止这似乎很小:
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
if (DynamicLanguage.getLayoutDirection(getContext()) == View.LAYOUT_DIRECTION_RTL) {
this.textView.setGravity(Gravity.RIGHT);
} else {
this.textView.setGravity(Gravity.LEFT);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9998 次 |
最近记录: |