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. 标签下添加 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仔细检查每个页面以及资源,根据需求调整即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值