【问题标题】:Need to center-align a single portion of text in a TextView需要在 TextView 中居中对齐文本的单个部分
【发布时间】:2013-11-18 01:52:23
【问题描述】:

我目前正在使用 SpannableString 在单个 TextView 中格式化一大块文本。大小和颜色的格式都很好,但我很难对齐。

我发现 this post 提供了关于对齐格式的指导,以及 this Android Developer page 关于如何使用 AlignmentSpan,但它似乎对我不起作用。 Eclipse 没有显示错误,应用程序加载/运行得很好,但对齐部分似乎完全被忽略了。这是我的代码:

Spannable t = new SpannableString("Test Blue.");
t.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.color_blue)), 0, t.length()-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
t.setSpan(new AbsoluteSizeSpan((int) getResources().getDimension(R.dimen.big_text)), 0, t.length()-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
t.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0, t.length()-1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text3.setText(t);

任何帮助将不胜感激。

[Edit] 我还尝试将颜色和大小 setSpans 都注释掉以查看是否存在冲突,但没有运气。

[编辑 2]:我将以下答案标记为正确,但正确答案实际上隐藏在 cmets 中。我未能将 TextView 的 XML 文件宽度更新为 match_parent(而不是 fill_content)。谢谢塞尔!

【问题讨论】:

    标签: android android-layout alignment spannablestring


    【解决方案1】:

    也许你可以尝试这样做:

    String t = "<center><font color=\"blue\">Test Blue.</font></center>";
    text3.setText(Html.fromHtml(t)); 
    

    【讨论】:

    • 感谢您的回复,哔叽。这对我也不起作用。在尝试 Spannable 字符串之前,我使用的是 HTML,但找不到令人满意的处理文本大小的方法。不过,要清楚的是,我确实尝试了您的建议,但它也没有使文本居中。无论如何,谢谢。
    • 我明白了,我继续看
    • Mybe 您没有在 XML 中设置文本宽度以匹配父级,因此它没有任何空间将其置于 TextView 内
    • 哇,好收获。我确实将 XML 更改为 match_parent,但它仍然没有居中。我想这会解决它。
    • 我的错!这确实解决了问题,但我编辑了错误的文件。我编辑了正确的文件,现在它工作得很好。 Serge,我是新来的……我应该将此答案标记为正确,还是您更愿意提供另一个答案(将 XML 更改为 match_parent),我可以检查一下?
    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2014-02-06
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多