MicroKibaco / CrazyDailyQuestion

每日一问: 水滴石穿,聚沙成塔,坚持数月, 必有收获~
35 stars 1 forks source link

说一下RTL语言适配的实现过程 #107

Open MicroKibaco opened 3 years ago

MicroKibaco commented 3 years ago

1)AndroidManifest image

2)Layout xml 布局适配

适配原则,在任何横向布局上,不是绝对的left和right,而是使用start和end。 image

需要注意的是,minSdkVersion<17,那么需要把left/start,right/end同时写上。但是gravity可以不需要同时写上,因为官方定义start end 值兼容了left right image

3) 资源适配 由于部分资源是有左右方向的,例如返回按钮的图片资源。通用适配方法: image

4)Java 代码布局适配 image

总结:

  1. 判断当前应该使用RTL或者LTR
    1. 获取View方向:ViewCompat.getLayoutDirection(view),需要注意的是在View构造函数中,getLayoutDirection总是返回LTR
  2. 获取某个Locale语言方向: TextUtilsCompat.getLayoutDirectionFromLocale(locale)
  3. 获取当前Activity使用的方向:context.getResources().getConfiguration().getLayoutDirection()
  4. 对相对屏幕左边的X值进行翻转 image