Html.fromHtml()不使用Text的背景颜色

Pra*_*ani 6 android textview

我试图在TextView使用中设置背景Html.fromHtml().特别是,我想在第一个单词上设置背景.

我使用了以下代码:

Html.fromHtml("<font color='red'>("+someText+")</font>");
Run Code Online (Sandbox Code Playgroud)

它正在以文本颜色成功执行.但是我想改变背景颜色.

我怎样才能做到这一点?

San*_*ela 8

试试这个:

TextView TV = (TextView) findViewById(R.id.mytextview01);

Spannable wordtoSpan = new SpannableString("hello hi. how are you?");        

wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
wordtoSpan.setSpan(new BackgroundColorSpan(Color.RED), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

TV.setText(wordtoSpan);
Run Code Online (Sandbox Code Playgroud)

这是设置文本和背景颜色(后者用BackgroundColorSpan).


sha*_*amd 5

Android官方不支持通过HTML文本的背景颜色,但是我找到了一种解决方法。

String str = "<span style=\"background-color:#f3f402;\">" + TEXT TO HIGHLIGHT + "</span>";

textView.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY));
Run Code Online (Sandbox Code Playgroud)

但是,但是,以上代码仅适用于Nougat(API 24)及更高版本。因此,您必须在不同的Android版本中管理HTML,例如:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    String str = "<span style=\"background-color:#f3f402;\">" + TEXT TO HIGHLIGHT + "</span>";
    textView.setText(Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY));
} else {
    String str = "<font color='#f3f402'>" + TEXT TO HIGHLIGHT + "</font>";
    textView.setText(Html.fromHtml(str));
}
Run Code Online (Sandbox Code Playgroud)

您可以从此处找到有关Android支持的HTML标签的更多信息: