最近项目需要对阿拉伯语做支持,之前GP上都被阿拉伯人差评,一度不再支持阿拉伯语,因为语言习惯不符合人家的,人家喜欢从右往左读的。这次老板说阿拉伯人有钱,很多是土豪,我们的APP必须支持阿拉伯语,所以了,这里总结一下,我们项目是如何支持阿拉伯语的。
第一步:AndroidManifest.xml添加从右往左supportsRtl的排版
<application
android:name="com.figo.study"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
android:label="@string/product_name"
android:largeHeap="true"
android:supportsRtl="true"
tools:replace="android:icon,android:label">
第二步:布局文件中有Left就要有Start,有Right就要有End,这样保证了兼容低版本
就像这样:
android:layout_marginLeft="2dp" android:layout_marginStart="2dp" android:layout_marginRight="2dp" android:layout_marginEnd="2dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:paddingLeft="2dp" android:paddingStart="2dp"
另外对于EditText需要从右往左输入,改动如下:
android:gravity="left|top"表示光标在左上角,那么这个属性需要在java文件中根据语言环境动态修改成光标在右上角。如下:<EditText android:id="@+id/et_content" android:layout_width="match_parent" android:layout_height="138.5dp" android:layout_below="@+id/layout_title" android:layout_marginLeft="2dp" android:layout_marginStart="2dp" android:layout_marginRight="2dp" android:layout_marginEnd="2dp" android:background="@null" android:gravity="left|top" android:hint="@string/lbl_enter_feedback" android:inputType="textMultiLine" android:minLines="6" android:singleLine="false" android:textCursorDrawable="@drawable/cursor_color" />
etContent = (EditText) findViewById(R.id.et_content); etContent.setHintTextColor(getResources().getColor(R.color.light2gray)); Locale locale = getResources().getConfiguration().locale; String language = locale.getLanguage(); if (language.endsWith("ar")) { etContent.setGravity(Gravity.RIGHT|Gravity.TOP); }