ImageSpan在Android 4.2 Jelly Bean中删除以下文本

时间:2013-03-25 15:54:39

标签: android textview android-4.2-jelly-bean

我的问题非常类似于here所描述的问题。但它只在Android 4.2设备上测试时出现。在使用Android 2.2的较旧的测试设备上,一切都很好。

我的问题

我在TextView中间添加了一个ImageSpan,它将替换TextView的一个字符。在Android 4.2 将显示ImageSpan 之后的文本。在Android 2.2中,一切都像预期的那样。

代码示例

    CharSequence chars = txtView.getText();
    SpannableStringBuilder stringBuilder = new SpannableStringBuilder(chars);

    for (int i = 0; i < chars.length(); i++) {
        int codePoint = Character.codePointAt(chars, i);
        if (codePoint > 255) {
               // loading the bitmap ...
               ImageSpan img = new ImageSpan(context, bmp, ImageSpan.ALIGN_BASELINE);
               stringBuilder.replace(i, i + 1, "");
               stringBuilder.setSpan(img, i, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    txtView.setText(stringBuilder, BufferType.SPANNABLE);

截图

Android 2.2 Screenshot which shows how it should be Android 4.2 Screen which shows the bug

到目前为止我尝试了什么

我尝试了几乎所有Spanned - 常量,您可以在setSpan添加,但4.2设备上没有任何效果。

1 个答案:

答案 0 :(得分:3)

我很抱歉我发布了这个,因为我自己找到了答案。 我之前认为我曾尝试Spanned.SPAN_INCLUSIVE_EXCLUSIVE,但我显然没有。无论如何...

stringBuilder.setSpan(img, i, i + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

适用于Android 4.2和Android 2.2。希望这个帖子将来会帮助其他人。