【问题标题】:TextView with background color only on the text itself仅在文本本身上具有背景颜色的 TextView
【发布时间】:2013-06-08 16:30:49
【问题描述】:

我该如何实现这样的东西:

我想在单个 TextView 中执行此操作。设置 TextView 的背景颜色将不起作用。

我猜应该可以使用 spannable,但我不知道怎么做。

在 html 中我会这样做:

<html>
<body>
        <span style="background:#CCCCCC;">first line <br /> second long line </span>
</body>
</html>

但我不知道如何在 Android 上做到这一点。 最后一个选项是将文本拆分为两个文本视图,并将每个文本视图的背景颜色和 with/height 设置为 wrap_content。但是由于文本长度/字数可以是动态的,所以我需要计算每个单词的长度等。必须有更好的方法:)

【问题讨论】:

    标签: android textview


    【解决方案1】:

    这样的东西应该可以完成这项工作

    String myString = "first line\nsecond long line";
    Spannable spanna = new SpannableString(myString);
    spanna.setSpan(new BackgroundColorSpan(0xFFCCCCCC),0, myString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);           
    myTextView.setText(spanna);
    

    如果您想将其保存在 html 中,您可以使用 WebView 并在那里加载您的 html,我认为使用 css 样式应该更容易

    【讨论】:

    • 这正是我想要的!谢谢!知道如何向 BackgroundColorSpan 添加某种填充?
    • 对不起,我不知道是否有可能在 spannable 上有一个真正的填充,我唯一能想到的就是用空格 xD 放大字符串
    • 是的,添加空格是我目前的解决方案 :D 这不是最优雅的解决方案,但它确实有效!非常感谢!
    • @sockeqwe,您是否设法弄清楚如何向 spannable 添加填充?
    • 不,仍然使用空格
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2014-08-28
    • 2016-06-25
    相关资源
    最近更新 更多