1. ホーム
  2. android

[解決済み] Android Nで非推奨となったHtml.fromHtmlについて

2022-03-14 03:54:37

質問

を使っています。 Html.fromHtml でhtmlを表示します。 TextView .

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

しかし Html.fromHtml はAndroid N+で非推奨になりました

新しい方法は何/どうすれば見つかりますか?

どのように解決するのですか?

更新 : として アンディは次のように述べています。 Googleは HtmlCompat を使用することで、以下のメソッドの代わりに使用できます。この依存関係を追加する implementation 'androidx.core:core:1.0.1 をアプリのbuild.gradleファイルに追加してください。の最新版を使用するようにしてください。 androidx.core:core .

これにより、使用することができます。

HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);

各フラグについての詳細は HtmlCompat-documentation

オリジナルの回答です。 Android Nでは、新しい Html.fromHtml というメソッドがあります。 Html.fromHtml は、flags という名前の追加パラメータを必要とするようになりました。このフラグによって、HTMLの表示方法をより細かく制御することができます。

Android N 以上では、この新しいメソッドを使用する必要があります。古い方法は非推奨で、将来のAndroidバージョンで削除される可能性があります。

独自のUtil-methodを作成し、古いバージョンでは古いメソッドを、Android N以上では新しいメソッドを使用することができます。バージョンチェックを行わない場合、Androidのバージョンが低いとアプリが壊れます。このメソッドは、Utilクラスで使用することができます。

@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
    if(html == null){
        // return an empty spannable if the html is null
        return new SpannableString("");
    }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // FROM_HTML_MODE_LEGACY is the behaviour that was used for versions below android N
        // we are using this flag to give a consistent behaviour
        return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
    } else {
        return Html.fromHtml(html);
    }
}

を変換することができます。 HTML.FROM_HTML_MODE_LEGACY を追加パラメータにすることができます。これにより、どのフラグを使用するかをより詳細に制御することができます。

各フラグについての詳細は Htmlクラスのドキュメント