问题 如何设置整个应用程序的方向到RTL?


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


12515
2018-01-20 20:21


起源

你可以尝试设置 android:supportsRtl=true 在你的AndroidManifest.xml里面 <application> 标签。 - PattaFeuFeu
@ PattaFeuFeu:只会在OS语言为rtl时改变方向。我想改变方向,即使操作系统是LTR - mdehghani


答案:


我有同样的问题,你需要做的只是考虑所有你使用过的父容器(LinearLayout , RelativeLayout , GridView 等等,并将LayoutDirection设置为RTL,您可以通过ViewCompat类以低于17的api方式进行编程。

ViewCompat.setLayoutDirection(yourParentContainer,ViewCompat.LAYOUT_DIRECTION_RTL);

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


7
2017-08-24 14:02



多谢。我想这就是诀窍。 - mdehghani


请从Android开发者博客中查看此文本摘录:

要利用RTL布局镜像,只需进行以下操作即可   更改您的应用:

1-在您的应用清单中声明您的应用支持RTL镜像。   具体来说,将android:supportsRtl =“true”添加到   清单文件中的元素。

2-将应用程序的所有“左/右”布局属性更改为新的   “开始/结束”等价物。如果您将应用定位到Android 4.2   (应用程序的targetSdkVersion或minSdkVersion为17或更高),然后   你应该使用“开始”和“结束”而不是“左”和“右”。对于   例如,android:paddingLeft应该成为android:paddingStart。

如果您希望自己的应用能够使用早于Android 4.2的版本   (app的targetSdkVersion或minSdkVersion是16或更少),然后你   应该添加“开始”并结束“除了”左“和”右“。对于   例如,你同时使用android:paddingLeft和android:paddingStart。

全文可在此处找到:

http://android-developers.blogspot.ca/2013/03/native-rtl-support-in-android-42.html


2
2018-01-20 20:40