1,android设计的布局在阿拉伯语下界面错乱的解决方法
(1)在AndroidManifest.xml声明文件的
(2)修改应用程序中layout的“left/right”布局属性,改为对应的”start/end”布局
用属性paddingStart paddingEnd layout_marginStart layout_marginEnd layout_alignParentStart layout_alignParentEnd
替换或者是添加
paddingLeft paddingRight layout_marginLeft layout_marginRight layout_alignParentLeft layout_alignParentRight
(3)混合字符或者纯英文下,TextView没有居右。比如列表中部分纯英文字串靠左显示,翻译过的靠右显示找到其定义的layout文件用 match_parent替换wrap_content,如果替换后还是没有效果新增android:textDirection="locale”这个属性。
代码控制
String language = Locale.getDefault().getLanguage();
if(language.equals("ar")||language.equals("fa")){
TextView textview =(textview )view;
textview.setGravity(Gravity.RIGHT);
}
(4)对于一些图片方向不对的问题
对于这些图片需要按照重新设计,然后放到drawable-ldrtl-hdpi文件夹下
2,从右到左布局(RTL Layout)
从Android 4.2开始,Android SDK支持一种从右到左(RTL,Right-to-Left)UI布局的方式,尽管这种布局方式经常被使用在诸如阿拉伯语、希伯来语等环境中,中国用户很少使用。不过在某些特殊用途中还是很方便的。
(1)所谓RTL,就是指按平常习惯在左的视图都会在右侧,在右侧的视图都会在左侧。例如,在线性布局中第1个子视图默认都是在左上角的,如果采用RTL布局,默认就在右上角了。
(2)RTL布局默认是关闭的,如果想使用RTL布局,首先要在AndroidManifest.xml文件中将
(3)如果要使用RTL布局,还应该注意一个重要的问题。假设一个水平线性布局中有两个
android:layout_marginStart:
如果在LTR布局模式下,该属性等同于android:layout_marginLeft。
如果在RTL布局模式下,该属性等同于android:layout_marginRight。
android:layout_marginEnd:
如果在LTR布局模式下,该属性等同于android:layout_marginRight。
如果在RTL布局模式下,该属性等同于android:layout_marginLeft。
3,某些阿拉伯文字符显示顺序不是从右至左显示
某些阿拉伯语系(阿拉伯、波斯、希伯来)等在设置等界面显示还是从左至右显示,要改成从右至左显示很简单,只需改如下几个文件即可:
1.\packages\apps\Settings\res\layout\preference_icon.xml
2.\frameworks\base\core\res\res\layout\preference.xml
3.\frameworks\base\core\res\res\layout\preference_information.xml
将以上三个布局文件中TextView的属性 由android:layout_width="wrap_content"改为android:layout_widht="fill_parent"即可
4,在有些textview中的文字显示,如果在阿拉伯语界面中,该字串是英文字串,可能会导致这个字串不是从右向左显示的,这种情况下就需要到代码中找到这个textview控件设置文字的地方进行动态布局调整,需要通过语言进行判断,否则会将所有语言的界面都修改了,正常情况下不推荐进行这样的改法,特殊情况下可以使用这种方法进行修改。
比如,if(Locale.getDefault().getLanguage().equals("ar")){
mTitleView.setGravity(Gravity.RIGHT);
}