Как вставлять изображения в edittext, как в заметках?
сейчас я использую SpannableStringBuilder для этого, но я не понимаю как с ним взаимодействовать, как удалить по нажатию на картинку, или как запретить ставить курсор внутрь куртинки.
вот мой код сейчас для этого:
@Suppress("DEPRECATION") val d= BitmapDrawable(bitmap)
d.setBounds(0, 0, edit.width, (edit.width.toDouble()*(bitmap.height.toDouble()/bitmap.width.toDouble())).toInt())
var selectionCursor=edit.selectionStart
edit.text.insert(selectionCursor, ".")
selectionCursor=edit.selectionStart
val builder= SpannableStringBuilder(edit.text)
builder.setSpan(ImageSpan(d), selectionCursor - ".".length, selectionCursor, 1)
edit.append("\n")
edit.text = builder
edit.setSelection(selectionCursor)
edit.append("\n")
на первом скриншоте показано куда попадает курсор, если нажать на картинку, а на втором к чему это может привести.
Мой вопрос заключается в том, как правильно сделать прикрепление картинок в приложении заметок, или как обрабатывать нажатия и, что важно, находить ImageSpan, чтобы сохранить его, а потом вставить для просмотра?
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Вот есть способ например:
editText = (EditText)mRoot.findViewById(R.id.content);
ImageSpan imageSpan = new ImageSpan(preview);
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(editText.getText());
// this is a string that will let you find a place, where the ImageSpan is.
String imgId = "[img=1]";
int selStart = editText.getSelectionStart();
// current selection is replaceв with imageId
builder.replace(editText.getSelectionStart(), editText.getSelectionEnd(), imgId);
// This adds a span to display image where the imageId is. If you do builder.toString() - the string will contain imageId where the imageSpan is.
// you can use it later - if you want to find location of imageSpan in text;
builder.setSpan(imageSpan, selStart, selStart + imgId.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(builder);