2

我有一个包含英语和波斯语的字符串。我想如果一行以波斯字符开头,那么这条线在文本视图中从右到左显示,如果一行以英文字符开头,那么这条线从左到右显示。

注意:我想为文本视图中的每一行设置重力/方向。

如何在 android textview 中实现它。

这是我的 textview xml 代码:

    <TextView
        android:id="@+id/textViewContent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:autoLink="web"
        android:layoutDirection="rtl"
        android:gravity="start"
        android:layout_gravity="start"
        android:text="My Text"
        android:textColor="#000"
        android:textDirection="rtl" />
4

5 回答 5

5

您正在寻找的是要添加到您的文本视图的ANY_RTL文本方向

    android:textDirection="anyRtl"

你会得到这样的结果:

在此处输入图像描述

考虑到它是一个 API17+ 解决方案。

于 2016-10-05T08:15:06.673 回答
2

您可以使用 TextView 的属性来对齐文本内容。

在布局中将文本向左对齐

android:gravity="start"

在布局中将文本右对齐。

android:gravity="end"
于 2016-07-05T12:08:23.707 回答
0

使用重力属性。

而不是左/右使用开始,这是为了支持 rtl 而添加的。

https://developer.android.com/reference/android/widget/TextView.html#attr_android:gravity

于 2016-07-05T12:05:46.057 回答
0

像这样使用

           if (textview.contentEquals("persian")) {
                textview.setGravity(Gravity.START);
            } else if (textview.contentEquals("english")) {
                textview.setGravity(Gravity.END);
            }
于 2016-07-05T12:11:09.900 回答
0

我想你可以尝试使用 spannable 和 Alignment 属性:

Alignment.ALIGN_OPPOSITE(右)和 Alignment.ALIGN_NORMAL(左)。

检查这个答案:TextView 中的多重对齐?

于 2016-07-05T13:09:24.150 回答