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.2HTML的-class的来源(不是你的,但很接近):

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>因为前者被定义为粗体和斜体,而第二对取决于实现。

于 2013-05-11T14:36:34.703 回答