Android RTL布局适配

最近公司有海外项目需求,因为有多语言适配,布局就需要LTR以及RTL布局方式,特此记录一下简单适配过程。

  • 开发语言 kotlin

  • 布局使用xml结合 viewbinding

  • 最低 Api Level 21

RTL

  1. RTL 是 Right-to-left 的缩写,其意为阅读和书写的习惯,是从右向左延伸的。再对比一下我国人自身的使用习惯,都是 LTR 的,也就是从左向右。

  2. RTL 可以简单理解是 LTR 的镜像,当需要适配 RTL 的时候,除了翻译语言本身,还需要做到的就是 UI 布局,从中轴上镜像反转。

  3. RTL 不符合我们国人的使用习惯,但是全球范围内依然有一部分人保持着 RTL 的习惯,比较常见的就是阿拉伯语、希伯来语等。

  4. Android 4.2 开始,增加了对 RTL 镜像布局完全原生的支持。我这里使用最低Android5.0,所以完全支持。

  5. 在这些系统版本上,只要用户系统语言切换到「RTL 系语言」,首先系统 UI 会直接左右镜像切换,此时如果你的 App 支持 RTL 镜像布局时,也会自动切换布局方向。

支持

  1. <applictaion> 标签下添加 android:supportsRtl="true" 即可。

  2. 布局的编写需要注意

    1.  xxxLeft/xxxRight "替换"为 xxxStart/xxxEnd
    2. 使用约束布局 Left/Right 都需要变换为 Start/End
    3. 如果不想某些控件镜像,使用Left/Right即可,使用后不会被镜像
  3. 一些细节

    1. 适配 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>
    2. 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/
来源:爱分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>