我试图在我的应用程序中支持rtl语言环境,但是遇到了以下问题。现在我说的问题,但它可能甚至不是一个问题,因为我不熟悉rtl语言环境,所以这里。
下面是3个文本视图。注意以下输出是通过dev选项强制打开rtl的。
英语语言测试
android - Android RTL文本方向-LMLPHP
强制英语rtl考试
android - Android RTL文本方向-LMLPHP
我发现奇怪的是,它没有对齐到右边,即使我说android:gravity="start"就像它是如何与填充和边距等一起工作的,所以我看了其他答案,发现了android:textDirection="locale"
基于文本方向语言环境的英语rtl测试
android - Android RTL文本方向-LMLPHP
现在这正确地反映了ltr和rtl,但是我注意到标点符号的以下行为。这引起了一个眉毛是否这是正确的,因为我是比较谷歌游戏商店,脸谱网和whats应用程序与rtl强迫,我没有看到这一点时,看段落标点符号,使我相信我做了错事。
完整布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="start"
        android:text="@string/test_one"
        android:textColor="@android:color/black"
        android:textDirection="locale"
        android:textSize="24sp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="start"
        android:text="@string/test_two"
        android:textColor="@android:color/black"
        android:textDirection="locale"
        android:textSize="24sp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="start"
        android:text="@string/test_three"
        android:textColor="@android:color/black"
        android:textDirection="locale"
        android:textSize="24sp" />

</LinearLayout>

其他代码
以下是在我的清单文件中设置的
 android:supportsRtl="true"

这是我的琴弦
<string name="test_one">Good Job. You did well!</string>
<string name="test_two">3 hours ago</string>
<string name="test_three">Select Option:</string>

请原谅这听起来有多天真,并启发我!我希望提供舒适的rtl支持!

最佳答案

android:textDirection="locale"TextView中添加android:supportsRtl="true"就可以了。但是,textDirection="locale"会改变方向以设置enfaar的区域。(取决于设备的语言)
为了清楚起见,它工作正常,因为在TextView中的文本是LTR并且您使用了RTL方向,正如您所见,它使方向RTL并且没有问题。而且,使用android:gravity="start"可能会强制它从一开始就使用,我想,它将从LTR开始。(我建议删除android:gravity="start"并让android(为了设备的语言)决定哪一个是最好的)
因此,要测试它是否有效,可以将文本设置为阿拉伯语或波斯语,如下所示:

android:text="این یک تست است"

如果它是从RTL开始的,并且是从"این"开始的,那么它可以按预期工作。

关于android - Android RTL文本方向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52524844/

10-13 03:01