3

私の問題は、ここで説明した問題と非常によく似ています。ただし、Android4.2デバイスでテストする場合にのみ表示されます。Android 2.2を搭載した古いテストデバイスでは、すべてが非常にうまく機能します。

私の問題

TextViewの途中にImageSpanを追加しています。このシェルは、TextViewの1文字を置き換えます。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);

スクリーンショット

それがどうあるべきかを示すAndroid2.2スクリーンショット バグを表示するAndroid4.2画面

私がこれまでに試したこと

追加できるほぼすべてのスパンsetSpan定数を試しましたが、4.2デバイスでは何も機能しません。

4

1 に答える 1

3

自分で答えを見つけたので、これを投稿して本当に申し訳ありません。私は以前に試したと本当に思っていSpanned.SPAN_INCLUSIVE_EXCLUSIVEましたが、明らかにしませんでした。ともかく...

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

Android4.2とAndroid2.2で動作します。うまくいけば、このスレッドは将来誰か他の人を助けるでしょう。

于 2013-03-25T16:11:59.717 に答える