TextView中的多重对齐?

时间:2011-07-11 17:32:04

标签: android android-2.2-froyo text-alignment

我有一个类似下面的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”这样的东西。

enter image description here

4 个答案:

答案 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。