阿拉伯语、波斯语等RTL语言下部分控件位置不对

来源:互联网 发布:朝鲜族吃里扒外知乎 编辑:程序博客网 时间:2024/04/24 20:53

阿拉伯语、波斯语等RTL语言下部分控件位置不对

一些RTL语言比如阿拉伯语、波斯语,其layout布局以及Text显示方向是从右到左的,android4.2版
本及以后新增属性android:supportsRtl可以实现这种功能。然而对于一下特殊的字符串,比如波斯
语和英文混合的字串、纯英文字串以及一些特殊的控件并不能实现从右到左显示。对于这些问题
,下面给出一些例子和解法。
关于supportsRtl的使用可以参考:FAQ08672
1、混合字符或者纯英文下,TextView没有居右。
A、找到其定义的layout文件
用 match_parent替换wrap_content,如果替换后还是没有效果新增
android:textDirection="locale”这个属性。
例如Preference summary英文下没有居右,可以如下修改
frameworks\base\core\res\res\layout\Preference_holo.xml
<TextView android:id="@+android:id/summary"
android:layout_width="match_parent"
……
android:textDirection="locale"
B、如果找不到其layout,可以在code中使用如下函数进行设置
setGravity(Gravity.RIGHT);
setTextDirection(TEXT_DIRECTION_RTL);
例如spinner控件波斯语下英文字串没有居右,可以如下修改
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String language = Locale.getDefault().getLanguage();
if(language.equals("ar")||language.equals("fa")){
TextView textview =(textview )view;
textview.setGravity(Gravity.RIGHT);
}
……
2、对于一些控件没有居右或者layout布局错乱的问题
应检查layout的“left/right”布局属性,是否已经改为对应的”start/end”属性。具体例子可以
参考FAQ08672。
3、对于一些图片方向不对的问题
对于这些图片需要按照RTL重新设计,然后放到drawable-ldrtl-hdpi文件夹下。比如actionbar的那
个竖线,使用的地方如下
<selector xmlns:android="
http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_cab_done_pressed_holo_dark" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_cab_done_focused_holo_dark" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_cab_done_default_holo_dark" />
上面那些图片位置在frameworks\base\core\res\res\drawable-hdpi,重新绘制后放到
frameworks\base\core\res\res\drawable-ldrtl-hdpi目录下

0 0
原创粉丝点击