CrazyDailyQuestion
CrazyDailyQuestion copied to clipboard
说一下RTL语言适配的实现过程
1)AndroidManifest
2)Layout xml 布局适配
适配原则,在任何横向布局上,不是绝对的left和right,而是使用start和end。
需要注意的是,minSdkVersion<17,那么需要把left/start,right/end同时写上。但是gravity可以不需要同时写上,因为官方定义start end 值兼容了left right
- 资源适配 由于部分资源是有左右方向的,例如返回按钮的图片资源。通用适配方法:
![]()
4)Java 代码布局适配
总结:
- 判断当前应该使用RTL或者LTR
- 获取View方向:ViewCompat.getLayoutDirection(view),需要注意的是在View构造函数中,getLayoutDirection总是返回LTR
- 获取某个Locale语言方向: TextUtilsCompat.getLayoutDirectionFromLocale(locale)
- 获取当前Activity使用的方向:context.getResources().getConfiguration().getLayoutDirection()
- 对相对屏幕左边的X值进行翻转