如何覆盖 Android 中布局的 RTL 支持
How to override RTL support on a layout in Android
我在 AndroidManifest.xml 的 <application>
标签中设置了 android:supportsRtl="true"
,但我需要强制其中一个视图 从左到右 尽管如此,即使界面语言是希伯来语或阿拉伯语。如何在 RTL 应用程序中将特定视图强制为 LTR?
具体来说,即使语言是从右到左的,我也想强制某些线性布局从左到右而不是默认的从右到左。
通常 gravity="left"
足以强制文本从左到右。但这对线性布局的方向没有帮助。解决方案是添加 android:layoutDirection="ltr"
.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
从左到右所有布局内容。
要完成答案,除了 XML 之外,还可以使用 ViewCompat.setLayoutDirection(view, LayoutDirection.RTL)
以编程方式更改布局方向。此 API 可以从 API 19 及以后使用,因此如果您的 min sdk 版本支持 API 低于 19,则需要执行 if
-检查:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
ViewCompat.setLayoutDirection(...)
如果你想强制你的应用程序在 rtl 语言上使用 ltr,你不需要布局方向(它适用于 api>17)你可以将 android:supportsRtl
设置为 false。
我在 AndroidManifest.xml 的 <application>
标签中设置了 android:supportsRtl="true"
,但我需要强制其中一个视图 从左到右 尽管如此,即使界面语言是希伯来语或阿拉伯语。如何在 RTL 应用程序中将特定视图强制为 LTR?
具体来说,即使语言是从右到左的,我也想强制某些线性布局从左到右而不是默认的从右到左。
通常 gravity="left"
足以强制文本从左到右。但这对线性布局的方向没有帮助。解决方案是添加 android:layoutDirection="ltr"
.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
从左到右所有布局内容。
要完成答案,除了 XML 之外,还可以使用 ViewCompat.setLayoutDirection(view, LayoutDirection.RTL)
以编程方式更改布局方向。此 API 可以从 API 19 及以后使用,因此如果您的 min sdk 版本支持 API 低于 19,则需要执行 if
-检查:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
ViewCompat.setLayoutDirection(...)
如果你想强制你的应用程序在 rtl 语言上使用 ltr,你不需要布局方向(它适用于 api>17)你可以将 android:supportsRtl
设置为 false。