好吧,我不知道是否有任何官方解决方法,所以我实施了一个 hack。
我将此添加到gradle.build
文件的末尾
String targetRTLDir = "res/layout-ldrtl"
task copyTask(type: Copy) {
delete fileTree(dir: targetRTLDir)
from 'res/layout'
into targetRTLDir
filter { String line -> line.replaceAll('Right', 'RTL_R') }
filter { String line -> line.replaceAll('Left', 'Right') }
filter { String line -> line.replaceAll('RTL_R', 'Left') }
filter { String line -> line.replaceAll('android:layout_gravity="right"', 'android:layout_gravity="rtl_r"') }
filter { String line -> line.replaceAll('android:layout_gravity="left"', 'android:layout_gravity="right"') }
filter { String line -> line.replaceAll('android:layout_gravity="rtl_r"', 'android:layout_gravity="left"') }
filter { String line -> line.replaceAll('android:gravity="right"', 'android:gravity="rtl_r"') }
filter { String line -> line.replaceAll('android:gravity="left"', 'android:gravity="right"') }
filter { String line -> line.replaceAll('android:gravity="rtl_r"', 'android:gravity="left"') }
filter { String line -> line.replaceAll('android:gravity="start"', 'android:gravity="right"') }
filter { String line -> line.replaceAll('android:gravity="end"', 'android:gravity="left"') }
}
preBuild.dependsOn('copyTask')
它所做的只是将所有文件从layout
to复制layout-ldrtl
并交换所有left
和right
.
如果需要,您也可以替换 allleft
和right
tostart
并将end
其放入layout-v17
文件夹中,但我发现这更好用,因为android:gravity="start"
不起作用!
我是新手Gradle
,所以如果可以使用更简单的脚本来完成,请原谅:)