【发布时间】:2015-03-23 20:21:58
【问题描述】:
我有一个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);
【问题讨论】:
-
嗯...你是如何填充这个
TextView的?你在使用LocaleSpan还是什么? IOW,TextView如何知道文本是一种、两种或 30 种语言? -
我正在使用
SpannableStringBuilder。我已经更新了这个问题。titleText和otherText可能是也可能不是同一种语言。 -
我希望
TEXT_DIRECTION_FIRST_STRONG能够解决问题,因为 第一个强方向字符决定段落方向文档行 -
titleText和otherText的实现是什么Java类?String?如果是,我不知道TextView为何或如何将它们放在具有单独 RTL/LTR 设置的单独行上。如果不是,那它们是什么? -
它们属于
String类。单独的行是因为我还附加了\n...ssb.append("\n").append(otheText);
标签: android textview right-to-left