Android 2.3.3中的HTML标记解析错误

时间:2013-05-11 13:42:43

标签: android html

我使用此代码:

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不会报告任何内容!

2 个答案:

答案 0 :(得分:4)

这个似乎是 is一个bug。查看HTML的来源Android 2.2(不是你的,但是关闭):

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 sources

中得到修复
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> - 标记可以正常工作。你可以改用它。

答案 1 :(得分:1)

这是一个已知问题:https://code.google.com/p/android/issues/detail?id=3473

从该页面看,解决方案似乎是使用<b><i>而不是<strong><em>,因为前者被定义为粗体和斜体,而第二对是依赖于实现的。