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中的多重对齐?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Compound Drawable 垂直对齐 TextView 中的文本
如何将 TextView 容器内的文本对齐到顶部? [复制]