Android APP支持RTL模式

1.简介

所谓RTL,顾名思义也就是Right To Left,是一种阿拉伯语、波斯语等情况下从右往左的阅读方式。当所开发的App等面向海外用户时需要做这个适配。从Android 4.2( V 17)开始支持原生的RTL模式。



2.使用


2.1.在<application>节点下配置 android:supportsRtl="true"




2.2.注意使用版本问题



2.3.在父布局中添加 layoutDirect属性


layoutDirect可以使用4种属性:

ltr:从左往右

rtl:从右往左

inherit:从上层视图中继承

locale:由Locale决定

分别对应的int值为0,1,2,3。



4.使用Demo


4.1.默认情况下

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="ltr"
    android:orientation="vertical">

    <TextView
        android:id="@+id/activity_main_textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView1"
        android:textColor="#FFFFFF" />


    <TextView
        android:id="@+id/activity_main_textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/activity_main_textview1"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/activity_main_textview3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/activity_main_textview2"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView3"
        android:textColor="#FFFFFF" />

</RelativeLayout>


效果:




4.2.使用rtl模式


4.2.1.其他代码不变

效果:



因为TextView2和TextView3都在TextView1的右边,又设置了RTL模式,所以TextView2和TextView3都不见了。


如何改成和上述代码一样的效果呢

android:layout_toRightOf

改成 

android:layout_toEndOf


android:layout_marginLeft

改成

android:layout_marginStart


即可


代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl"
    android:orientation="vertical">

    <TextView
        android:id="@+id/activity_main_textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView1"
        android:textColor="#FFFFFF" />


    <TextView
        android:id="@+id/activity_main_textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginRight="10dp"
        android:layout_toEndOf="@+id/activity_main_textview1"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/activity_main_textview3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginRight="10dp"
        android:layout_toEndOf="@+id/activity_main_textview2"
        android:background="#FF0000"
        android:gravity="center"
        android:padding="10dp"
        android:text="TextView3"
        android:textColor="#FFFFFF" />

</RelativeLayout>

效果:



猜你喜欢

转载自blog.csdn.net/weixin_37730482/article/details/80648520