2

私はこのコードを使用します:

alertDialog.setMessage(Html.fromHtml(getString(R.string.text));

文字列テキストには次が含まれます。

<strong>Hello StackOverflow!</strong>, <em>today it's a beatiful day!</em>.

Android 4.0.3 では魅力的に動作します。しかし、Android 2.3.3 ではタグが反転しています。タグは<strong>テキストを斜体にし、<em>タグはテキストを太字にします!!

理由がわかりません。LogCat は何も報告しません。

4

2 に答える 2

4

これバグのようです。 Android 2.2の-classのソースを見てください(あなたのものではありませんが、近いです):HTML

private void handleStartTag(String tag, Attributes attributes) {
    //... Other if's
    } else if (tag.equalsIgnoreCase("b")) {
        start(mSpannableStringBuilder, new Bold());
    } else if (tag.equalsIgnoreCase("strong")) {
        start(mSpannableStringBuilder, new Italic()); // <-- PROBLEM
    }
    // ... More here
}

これは、 Android 4.2.2 ソースで修正されています。

private void handleStartTag(String tag, Attributes attributes) {
    // Others up here...
    else if (tag.equalsIgnoreCase("strong")) {
        start(mSpannableStringBuilder, new Bold()); // <- FIXED
    } else if (tag.equalsIgnoreCase("b")) {
        start(mSpannableStringBuilder, new Bold());
    }
    // More down here...
}

解決策: ご覧のとおり、<b>-tag は正常に機能します。代わりに使用できます。

于 2013-05-11T14:37:02.473 に答える
1

これは既知の問題です: https://code.google.com/p/android/issues/detail?id=3473

<b>そのページから、解決策はand<i>ではなく<strong>andを使用することであると思われます。<em>なぜなら、前者は太字と斜体で定義されているのに対し、2 番目のペアは実装に依存しているためです。

于 2013-05-11T14:36:34.703 に答える