我试图在我的应用程序中支持rtl语言环境,但是遇到了以下问题。现在我说的问题,但它可能甚至不是一个问题,因为我不熟悉rtl语言环境,所以这里。
下面是3个文本视图。注意以下输出是通过dev选项强制打开rtl的。
英语语言测试
强制英语rtl考试
我发现奇怪的是,它没有对齐到右边,即使我说android:gravity="start"
就像它是如何与填充和边距等一起工作的,所以我看了其他答案,发现了android:textDirection="locale"
。
基于文本方向语言环境的英语rtl测试
现在这正确地反映了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"
会改变方向以设置en
或fa
或ar
的区域。(取决于设备的语言)
为了清楚起见,它工作正常,因为在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/