gpt4 book ai didi

android - 使用 android 4.2.2 破解 RTL 参数的错误行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:29 27 4
gpt4 key购买 nike

从android 4.2开始,全面支持RTL语言。
StartEnd 可以代替 LeftRight 来定义布局,但 android 4.1 及更早版本不支持 start 和结尾。
要对两个布局方向仅使用一个 xml,我们可以同时使用 startleftendright追溯兼容性。
例如:

<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
/>

With android 4.3 , device 仅使用 startend 参数并忽略 leftright 两者都定义的地方。

但是with android 4.2.2设备使用这两个参数!

我必须使用 layout-v17 文件夹来复制带有 startend 参数的每个布局。
还有其他解决方案吗?

最佳答案

嗯,我不知道是否有任何官方解决方法,所以我实现了一个 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 复制到 layout-ldrtl 并交换所有 leftright.

你也可以把所有的leftright替换成startend,放到中>layout-v17 文件夹,但我发现这样效果更好,因为 android:gravity="start" 不起作用!

我是 Gradle 的新手,如果这可以用更简单的脚本来完成,请原谅我:)

关于android - 使用 android 4.2.2 破解 RTL 参数的错误行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com