22

我有一个如下所示的 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”这样的东西。

在此处输入图像描述

4

3 回答 3

51

虽然它真的很晚才回答,但我认为它至少可以帮助某人。将此添加到您的代码中。

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 相当于左侧。

\n注意:这仅在左右对齐文本之间至少有 1 个换行符 ( ) 时有效。

于 2012-07-23T12:17:49.397 回答
2

我认为您应该将文本拆分为 1 个以上的字符串,将它们放入单独的文本视图中,然后一一对齐。

希望这可以帮助。

于 2012-12-12T16:14:02.667 回答
0

如果 resultText 总是右对齐,请将重力 =“right” 属性添加到您的resultTextView而不是尝试将文本与样式化的可跨字符串右对齐。这是假设灰色文本位于与主文本不同的 TextView 中。

在结果(灰色)文本的 xml 中:

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_width="fill_parent" />
于 2011-07-11T17:39:13.680 回答