2016-07-05 92 views
1

我有一个包含英文和波斯文的字符串。我希望如果一行以波斯语字符开头,那么这行在文本视图中从右向左移动,如果一行以英文字符开头,则这行将从左向右排列。如何在android textview中设置每条线的重力?

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

如何在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" /> 
+0

可能的重复[根据语言选择(LEFT-RIGHT)]对齐textview(http://stackoverflow.com/questions/14728604/align-textview-according-to-the-language-selection-left-right ) –

+0

@AmitVaghela我更新了我的问题和解答。 –

+0

你可以拆分你的文本,并分别在自己的'TextViews'中显示英文和波斯文本部分吗?这似乎是最简单的解决方案恕我直言。 – artkoenig

回答

1

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

Allign文本布局中的左

android:gravity="start" 

Aliign文本向右布局。

android:gravity="end" 
+0

我添加了我的textview xml代码。我想为每条线设置重力。 –

0

使用这样

  if (textview.contentEquals("persian")) { 
       textview.setGravity(Gravity.START); 
      } else if (textview.contentEquals("english")) { 
       textview.setGravity(Gravity.END); 
      } 
+0

我想为每行设置重力,而不是为textview设置重力。 –

+0

然后将重力设置为布局或视图,其过程与textview相同。 –

+0

假设你的线性布局有3行textview,然后只需设置layout.setGravity(Gravity.start); –

0

我想你可以尝试使用spannable和路线特性:

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

检查这个答案:Multiple alignment in TextView?

3

你所寻找的是被添加到您的文本视图

android:textDirection="anyRtl" 

ANY_RTL文字方向,你会得到这样的结果:

enter image description here

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