Дублирующиеся изображения появляются в 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);
}

1 ответ

Это было вызвано тем, что высота, установленная в setBounds, больше, чем у растрового изображения, из которого рисование было создано ранее в действии. Когда это происходит, есть две вещи, которые, кажется, происходят..

Во-первых, если размер только немного (я не проверял это, как только я его заработал, поэтому я не уверен в точных цифрах) превышает размер растрового изображения, тогда в промежуток добавляется большое пустое пространство, это пустое пространство тот же размер, что и вставленное растровое изображение.

Во-вторых, дополнительная копия Drawable добавляется в промежуток, прямо под пустым пространством.

Разрешение было относительно простым. Перед созданием Drawable и вызовом setBounds убедитесь, что для растрового изображения, использованного для создания Drawable, был задан предполагаемый конечный размер.

Это может работать не во всех случаях, но сработало для меня и, надеюсь, будет полезно для кого-то.

Я также заметил, что изображения повторяются, если в составной строке есть разрывы строк.

Другие вопросы по тегам