前言
这个世界上大部分国家读写方向都是从左向右的,但有一部分国家的读写方向是从右向左的,比如阿拉伯语言的国家。所以当适配这部分国家的ui的时候,我们需要从右到左布局。安卓已经帮我们做了很多东西,只要切换系统为阿拉伯语,安卓会帮我们把布局从右到左(我们需要将left 换成 start ,right 换成 end),但是我这个文章并不是教大家如何适配的,而是记录了一个适配过程中发现的一个坑。
正文
多的不说,先上代码
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/teal_200"
android:padding="20dp"
android:orientation="horizontal"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#EDD81E"
android:padding="20dp"
>
<RelativeLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:background="#F44336"/>
</RelativeLayout>
<LinearLayout
android:layout_width="100dp"
android:layout_height="200dp"
android:background="@color/black"
android:layout_marginStart="10dp"/>
</LinearLayout>
如图,上述代码实现的效果就是图片中的样子。当我把系统语言改为阿拉伯语的时候,想要的效果是下面这样的:
但是实际上却是下面这样的
当我把外层RelativeLayout的android:layout_width写死,或者去除内层RelativeLayout的android:layout_centerHorizontal="true"属性之后,再切换阿拉伯语就正常了。
或者将外层的LinearLayout换成RelativeLayout,这样是最不会出现问题的(注意用start,end,不要用left,right)。