如何将整个应用程序的方向设置为从右至左(RTL)?

16

我正在使用API 17,希望找到一种方法来将整个应用程序设置为RTL,而不是在每个活动布局中使用<android:layoutDirection="rtl">


你可以尝试在AndroidManifest.xml文件中的<application>标签内设置android:supportsRtl=true - PattaFeuFeu
7
即使操作系统是从左到右的,我也想改变方向,而不仅仅是改变方向,因为操作系统的语言是从右到左。 - mdehghani
3个回答

14

我曾经遇到过同样的问题,你只需要考虑所有已使用的父容器(LinearLayoutRelativeLayoutGridView等)并将布局方向设置为RTL。你可以通过ViewCompat类以编程方式实现此方法,以包括低于17版本的api。

ViewCompat.setLayoutDirection(yourParentContainer, ViewCompat.LAYOUT_DIRECTION_RTL);

请注意,无需单独为子视图设置方向。


4
请查看来自Android开发者博客的文本摘录:
要利用RTL布局镜像,请只需对您的应用程序进行以下更改:
1-在应用程序清单中声明您的应用程序支持RTL镜像。具体而言,请将android:supportsRtl =“true”添加到清单文件中的元素。
2-将应用程序中的所有“左/右”布局属性更改为新的“开始/结束”等效属性。如果您的应用程序针对Android 4.2(应用程序的targetSdkVersion或minSdkVersion为17或更高版本),则应使用“start”和“end”代替“left”和“right”。例如,android:paddingLeft应更改为android:paddingStart。
如果您希望您的应用程序与早于Android 4.2的版本一起工作(应用程序的targetSdkVersion或minSdkVersion为16或更低版本),那么您应该除了“left”和“right”之外还添加“start”和“end”。例如,您将同时使用android:paddingLeft和android:paddingStart。
完整的文本内容可以在此处找到:http://android-developers.blogspot.ca/2013/03/native-rtl-support-in-android-42.html

4

最简单、最好的方法
前往 app/res/values/styles 并将以下代码添加到你在 Android Manifest 中定义名称的 <style> 标签中,例如:

<style name"YourMainThemeName" parent="Parent Theme Of Your Choice">
    <item name="android:layoutDirection">rtl</item>
</style>

现在请打开 app/manifests/AndroidManifest.xml 文件,并将以下代码行添加到 <application> 标签中:

<application
        android:supportsRtl="true"
        android:theme="@style/YourMainThemeName">
</application>

现在您的布局方向是从右到左。


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