3

我的问题与此处描述的问题非常相似。但它仅在 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 屏幕截图显示了它应该如何 显示错误的 Android 4.2 屏幕

到目前为止我尝试过的

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

4

1 回答 1

3

I'm really sorry that I posted this, cause I found the answer myself. I really thought that I tried Spanned.SPAN_INCLUSIVE_EXCLUSIVE before, but I obviously didn't. Anyway...

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

works for me at Android 4.2 and Android 2.2. Hopefully this thread will help someone else in the future.

于 2013-03-25T16:11:59.717 回答