在AndroidManifest.xml文件中,android:supportsRtl="true"的用途是什么?

106

每当我在Android Studio中创建新项目时,我的应用程序的AndroidManifest文件中会出现android:supportsRtl="true"

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
...
</application>

如果我在我的应用程序 AndroidManifest 中添加或不添加它,那么这个应用程序中的使用方式是什么,有哪些优点和缺点。


6
我不认为这是一个重复的问题。两个问题都涉及RTL,但搜索这些问题的人会有所不同。 - SREE
2
这个重复引用的问题是错误的。对于寻找该问题的用户来说,上下文完全不同。 - Jaydev
2
TLDR https://android.jlelse.eu/rtl-support-on-android-here-is-all-you-need-know-e13f2df512e2 - VVB
4个回答

96
申明应用是否支持从右到左的布局。如果设置为true并且targetSdkVersion设置为17或更高版本,则系统将启用各种RTL APIs以便应用可以展示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低版本,则RTL APIs将被忽略或不会起作用,应用的布局方向将始终是从左至右(即使用户选择了RTL语言环境)。该属性的默认值为false。该属性在API level 17中添加。
(来源:http://developer.android.com/guide/topics/manifest/application-element.html

90

如果你正在开发一款阿拉伯语、乌尔都语、希伯来语等从右到左书写的应用程序,你需要将 android:supportsRtl 设置为 true,这样可以告诉布局从右到左排列。该属性的默认值为 false。


20
比谷歌文档更好。 - CopsOnRoad
1
感谢其他的回答,但这种回答更加有用并完善了文档。谢谢 @Sarah。 - Nicoolasens
1
你好,我的应用程序不支持阿拉伯语言,但我在manifest.xml中使用了android:supportsRtl="true",这是问题吗? - ozanurkan
6
@ozanurkan - 没问题。 这个答案是错误/误导性的。 android:supportsRtl="true" 启用了从右到左语言的支持。如果没有这个属性,布局将始终是从左到右,但仅凭它本身并不能将布局从左到右变为从右到左。它只是启用其他属性 - 其中一个新属性控制是从左到右还是从右到左。 - ToolmakerSteve

10

来自Android API-Guides:

(developer.android.com/guide/topics/manifest/application-element.html)

声明您的应用程序是否愿意支持从右到左(RTL)布局。

如果设置为true,并且targetSdkVersion设置为17或更高版本,则各种RTL API将被激活并由系统用于显示RTL布局。 如果设置为false或targetSdkVersion设置为16或更低版本,则RTL API将被忽略或无效,您的应用程序将始终按照用户语言环境选择的布局方向表现(您的布局将始终是从左到右)。

此属性的默认值为false。

此属性在API级别17中添加。


0

如果您开发支持RTL布局(镜像布局)的应用程序,您需要注意两件事情:

  1. 在AndroidManifest.xml中声明支持RTL镜像
<application
    android:supportsRtl="true">
</application>
  1. 使用 start/end 替代/补充 left/right
android:margineLeft
android:margineStart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接