我有一条TextView
,有2行。第一行rtl语言(让他们说希伯来语),第二行是ltr语言(让我们说英语)
View
结果类似于:
אחת שתיים שלוש
one two three
我想要什么:在这种情况下对齐rtl
אחת שתיים שלוש
one two three
我已尝试将setTextDirection()与TEXT_DIRECTION_FIRST_STRONG一起使用 但唉,结果是一样的。还试用TEXT_ANY_RTL但没有成功
myTextView.setTextDirection(View.TEXT_DIRECTION_FIRST_STRONG);
如果我使用TEXT_DIRECTION_RTL它按预期工作,但这不是一个真正的解决方案,因为大多数时候TextView
只包含一种语言。
这可以解决吗?
---更新---
我如何填充TextView
SpannableStringBuilder ssb = new SpannableStringBuilder(titleText);
int end = titlText.length();
ssb.append("\n").append(otheText);
ssb.setSpan(new AbsoluteSizeSpan(size), end, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(ssb);
答案 0 :(得分:1)
为什么不使用两个TextView?
答案 1 :(得分:1)
我设法使用Character.getDirectionality解决了这个问题。
作为方向字符的第一个字符将表示TextView
方向
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static int getTextDirection(String text) {
final int length = text.length();
for (int i = 0; i < length; i++) {
final char c = text.charAt(i);
final byte directionality = Character.getDirectionality(c);
if(directionality == Character.DIRECTIONALITY_LEFT_TO_RIGHT){
return View.TEXT_DIRECTION_LTR;
}
else if(directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT){
return View.TEXT_DIRECTION_RTL;
}
}
return View.TEXT_DIRECTION_ANY_RTL;
}
然后:
textView.setTextDirection(textDirection);
我非常相信TEXT_DIRECTION_FIRST_STRONG
应该根据文档做同样的事情。可悲的是,事实并非如此。
我不接受我的回答,希望有人能提出更好的解决方案
答案 2 :(得分:0)
TEXT_DIRECTION_ANY_RTL
此文字方向正在使用&#34; any-RTL&#34;算法。段落方向是RTL,如果它包含任何强RTL字符,否则它是LTR,如果它包含任何强LTR字符。如果两者都没有,则段落方向是视图已解析的布局方向。