TextView中的多重对齐?

Posted

技术标签:

【中文标题】TextView中的多重对齐?【英文标题】:Multiple alignment in TextView? 【发布时间】:2011-10-02 23:58:40 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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 个换行符 (\n) 时有效。

【讨论】:

这绝对应该是公认的答案!这也适用于通过 Alignment.ALIGN_CENTER 使文本居中。 由于某种原因,我无法让它在我的 TextView 中工作。所有的行都有相同的对齐方式。 它不工作。我在字符串中间也有 \n 一行如何? 一行语句不行。示例:“2016 年开始”。 “2016”不会向右下车。【参考方案2】:

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

希望这会有所帮助。

【讨论】:

【参考方案3】:

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

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

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_ />

【讨论】:

不,我的意思是黑色文本左对齐,灰色文本右对齐。我称之为“多重对齐”。 :) 您需要将黑色文本与结果文本分开(有 2 个单独的文本视图)。

以上是关于TextView中的多重对齐?的主要内容,如果未能解决你的问题,请参考以下文章

如何垂直对齐textView中的文本? (迅速)

如何使用 Compound Drawable 垂直对齐 TextView 中的文本

如何将 TextView 容器内的文本对齐到顶部? [复制]

如何使文本在 Android TextView 向右对齐

Android ImageSpan与TextView中的text居中对齐问题解决(无论TextView设置行距与否)

如何使文本在 Android TextView 向右对齐