重复的图像出现在EditText后插入一个ImageSpan在Android 4.x



我有下面的代码片插入位图到EditText小部件。与Android 5。x,它工作得很好,但与Android 4。x,插入一个位图后会显示重复的图像。有人知道如何解决这个问题与Android 4.x?

    insertPicIntoEditText(getBitmapSpannable(resized_bm, upload_uri));
    private SpannableString getBitmapSpannable(Bitmap pic, String uri_string) {
    SpannableString ss = new SpannableString(uri_string);
    ImageSpan span = new ImageSpan(this, pic);
    ss.setSpan(span, 0, uri_string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return ss;
}
    private void insertPicIntoEditText(SpannableString ss) {
    Editable et = mContentEditor.getText();
    int start = mContentEditor.getSelectionStart();
    et.insert(start, ss);
    et.insert(start + ss.length(), "n");
    mContentEditor.setText(et);
    mContentEditor.setSelection(start + ss.length() + 1);
}

这是由于setBounds中设置的高度大于活动早期创建的可绘制的位图的高度造成的。当这种情况发生时,似乎会发生两件事。

首先,如果大小只是稍微(我没有广泛的测试,一旦我得到它的工作,所以我不确定确切的数字)超过位图的大小,那么一个大的空白空间被添加到跨度,这个空白空间的大小与插入的位图相同。

第二,一个额外的Drawable副本被添加到span中,就在空格的正下方。

决议相对简单。在创建Drawable并调用setBounds之前,确保用于创建Drawable的位图被设置为预期的最终大小。

这可能不是在所有情况下都有效,但对我有效,希望能对别人有所帮助。

我还注意到,如果可伸缩字符串有换行符,图像会重复。

相关内容

  • 没有找到相关文章

最新更新