A. *_*and 8 android right-to-left
从Android 4.2开始,完全支持RTL语言.
Start并且End可以替换Left和Right定义布局,但Android 4.1及更早版本不支持开始和结束.
只使用一个XML两种布局方向,我们可以同时使用start和left或end和right的retrocompatibility.
举个例子 :
<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"
/>
Run Code Online (Sandbox Code Playgroud)
使用android 4.3,设备仅使用start和end参数,并忽略left和right两者都定义.
但是用android 4.2.2设备使用这两个参数!
我必须使用layout-v17文件夹来复制每个布局start和end参数.
还有另一种解决方案吗?
好吧,我不知道是否有任何官方解决方案,所以我实施了一个 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')
Run Code Online (Sandbox Code Playgroud)
它所做的只是将所有文件从layout复制到layout-ldrtl并交换所有left和right。
如果需要,您也可以将所有leftand替换right为startandend并将其放入layout-v17文件夹中,但我发现这样做效果更好,因为android:gravity="start"不起作用!
我对 很陌生Gradle,所以请原谅,如果这可以用更简单的脚本来完成:)
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |