Android RTL布局适配
-
开发语言 kotlin
-
布局使用xml结合 viewbinding
-
最低 Api Level 21
RTL
-
RTL 是 Right-to-left 的缩写,其意为阅读和书写的习惯,是从右向左延伸的。再对比一下我国人自身的使用习惯,都是 LTR 的,也就是从左向右。
-
RTL 可以简单理解是 LTR 的镜像,当需要适配 RTL 的时候,除了翻译语言本身,还需要做到的就是 UI 布局,从中轴上镜像反转。
-
RTL 不符合我们国人的使用习惯,但是全球范围内依然有一部分人保持着 RTL 的习惯,比较常见的就是阿拉伯语、希伯来语等。
-
Android 4.2 开始,增加了对 RTL 镜像布局完全原生的支持。我这里使用最低Android5.0,所以完全支持。
-
在这些系统版本上,只要用户系统语言切换到「RTL 系语言」,首先系统 UI 会直接左右镜像切换,此时如果你的 App 支持 RTL 镜像布局时,也会自动切换布局方向。
支持
-
<applictaion> 标签下添加 android:supportsRtl="true" 即可。
-
布局的编写需要注意
1. xxxLeft/xxxRight "替换"为 xxxStart/xxxEnd
2. 使用约束布局 Left/Right 都需要变换为 Start/End
3. 如果不想某些控件镜像,使用Left/Right即可,使用后不会被镜像 -
一些细节
-
适配 RTL 的过程中,无法避免的就是有一些属性必须要设置,比如常用的TextView
android:gravity="start"
android:textDirection="locale"
将这些属性在 style.xml 中全局为 TextView 设置
<style name="TextViewStyle.Alignment" parent="@android:style/Widget.TextView">
<item name="android:gravity">start</item>
<item name="android:textDirection">locale</item>
</style>
-
RTL 的资源适配
res/
mipmap-xhdpi/
b.png
mipmap-ldrtl-xhdpi/
b.png
layout/
main.xml // 默认布局
layout-ar/
main.xml // 阿拉伯语布局
layout-ldrtl/
main.xml // RTL 布局
-
小结
按照以上操作完成后,对照UI仔细检查每个页面以及资源,根据需求调整即可。
版权声明:
作者:skwen
链接:https://vicent.top/2022/08/13/hello-world/
来源:爱分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论