我使用html . fromhtml在TextView中查看html。

Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);

但是Html.fromHtml现在在Android N+中已弃用

我怎样才能找到做这件事的新方法?


当前回答

我有很多这些警告,我总是使用FROM_HTML_MODE_LEGACY,所以我做了一个名为HtmlCompat的助手类,包含以下内容:

   @SuppressWarnings("deprecation")
   public static Spanned fromHtml(String source) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY);
        } else {
            return Html.fromHtml(source);
        }
    }

其他回答

如果您有幸在Kotlin上开发, 只需创建一个扩展函数:

fun String.toSpanned(): Spanned {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
    } else {
        @Suppress("DEPRECATION")
        return Html.fromHtml(this)
    }
}

而且用在任何地方都很贴心:

yourTextView.text = anyString.toSpanned()

你可以使用

//noinspection deprecation
return Html.fromHtml(source);

仅对单个语句而不是整个方法抑制检查。

fromHtml

此方法在API级别24中已弃用。

你应该使用FROM_HTML_MODE_LEGACY

用空行(两个换行符)分隔块级元素 人物)介于两者之间。这是在N之前的遗留行为。

Code

if (Build.VERSION.SDK_INT >= 24)
        {
            etOBJ.setText(Html.fromHtml("Intellij \n Amiyo",Html.FROM_HTML_MODE_LEGACY));

         }
 else
        {
           etOBJ.setText(Html.fromHtml("Intellij \n Amiyo"));
        }

Kotlin的

fun setTextHTML(html: String): Spanned
    {
        val result: Spanned = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
        } else {
            Html.fromHtml(html)
        }
        return result
    }

Call

 txt_OBJ.text  = setTextHTML("IIT Amiyo")

比较fromHtml()的标志。

<p style="color: blue;">This is a paragraph with a style</p>

<h4>Heading H4</h4>

<ul>
   <li style="color: yellow;">
      <font color=\'#FF8000\'>li orange element</font>
   </li>
   <li>li #2 element</li>
</ul>

<blockquote>This is a blockquote</blockquote>

Text after blockquote
Text before div

<div>This is a div</div>

Text after div

对于Kotlin用户,我们可以使用String.parseAsHtml()扩展函数,它使用HtmlCompat,反过来有兼容性检查。

这可以从androidx.core:core-ktx的android核心kotlin扩展中获得