应用程序支持RTL布局
在AndroidManifest.xml的<application>
中,添加android:supportsRtl=true
。
android:supportsRtl声明您的应用程序是否支持从右到左(RTL)布局。
如果设置为true并targetSdkVersion设置为17或更高,则系统将激活并使用各种RTL API,以便您的应用程序可以显示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低,则RTL API将被忽略或无效,并且无论与用户的区域设置选项关联的布局方向如何,应用都将表现相同。
使用RTL布局
Android 4.2 后,paddingLeft
,paddingRight
,layout_marginLeft
,layout_marginRight
,layout_alignParentLeft
,layout_alignParentRight
等属性使用paddingStart
,paddingEnd
,layout_marginStart
,layout_marginEnd
,layout_alignParentStart
,layout_alignParentEnd
替换。
可使用AS工具一键替换(Refactor > Add RTL Support Where Possible)
另外,代码中也需要使用setMarginEnd等类似的方法去处理。
定义文本的方向
TextView默认情况下一般语言是从左到右显示,阿拉伯语是从右到左显示。
如果布局随locate反转后,语言显示会混乱,因此我们需要使用android:textDirection="locale"
属性来设置文本方向也随locate翻转。
定义文本的对齐方式
android:textAlignment
center(居中),inherit(默认,居左边显示),viewStart(居左显示 API 14),viewEnd(居右显示 API 14),textStart(居左显示 API 17),textEnd(居右显示 API 17)。
主要用于EditText的显示。
设置组件的布局方向
当我修改了系统语言为阿拉伯语后,我的应用不会翻转布局,只有重启设备后应用的布局才会翻转,但是theme添加了android:layoutDirection="locale"
属性后,切换语言后应用的布局马上翻转。
图片/动画/图标的方向
有方向的图片需要调转方向后,存放在drawable-ldrtl-xxx
这个资源文件夹下面(更改语言后需要重启,改为drawable-ar-xx
后可实时生效)。同理还有动画和图标的rtl文件夹:anim-ldrtl,mipmap-ldrtl-xxx。