Android 多行纯文本背景

Android Multiline text-only background

我想在我的 Android 项目中实现这样的文本视图:

文字可以多行,有背景,但背景必须只覆盖文字,不能覆盖剩余的空白区域。

我怎样才能做到这一点?

您可以使用 BackgroundColorSpan 设置 TextView 从起始索引到结束索引的背景颜色:

val textView = findViewById<TextView>(R.id.textView)
val spannable = SpannableString(textView.text.toString())
spannable.setSpan(
    BackgroundColorSpan(Color.parseColor("#C8ECFD")),
    0,
    spannable.length,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable

看起来你的突出显示是圆角的。如果您确实想要圆角,请查看 Drawing a rounded corner background on text,Florina Muntenescu 的中 post。

该解决方案在行之间留下了一些 space,而您的示例填充了 space,但我认为您可以修改代码以填充它。