我有一个类似下面的TextView。 我使用此代码为文本的一部分设置灰色。
// Prepare result text.
final String resultText = text + "\n\n" + dictionaryName;
final SpannableString styledResultText = new SpannableString(resultText);
styledResultText.setSpan(new ForegroundColorSpan(Color.GRAY), text.length() + 2, text.length() + 2 + dictionaryName.length(), 0);
resultTextView.setText(styledResultText);
现在我想为它设置对齐。怎么做? Android没有任何span类用于对齐。我找不到像“AlignmentSpan”这样的东西。
答案 0 :(得分:50)
虽然回答真的很晚,但我认为它至少可以帮到某些人。将其添加到您的代码中。
styledResultText.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE),
text.length() + 2, text.length() + 2 + dictionaryName.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Alignment.ALIGN_OPPOSITE与右侧相同。
Alignment.ALIGN_NORMAL是左侧的等效物。
答案 1 :(得分:2)
我认为您应该将文本拆分为多个字符串,将它们分成文本视图然后逐个对齐。
希望这有帮助。
答案 2 :(得分:0)
如果resultText始终是右对齐的,请将gravity =“right”属性添加到resultTextView
,而不是尝试将文本与样式化的spannable字符串右对齐。这假设灰色文本位于单独的TextView中,而不是主文本。
在结果(灰色)文本的xml中:
<TextView android:id="@+id/resultTextView"
android:gravity="right"
android:layout_width="fill_parent" />
答案 3 :(得分:-5)
AFAIK这是不可能的。我真的希望将这些作为两个不同的领域。看起来您已将数据分开,为什么不为灰色文本(dictionaryName)创建单独的TextView?
由于这个原因,我试图尽可能少地使用spannables。