SpannableStringBuilder не отображает картинки
я получаю изображение с камеры или из галереи и обрабатываю его в onActivityResult, в нем всё работает, картинка вставляется в текст, вот код для картинки из галереи(с камеры примерно так же):
if (requestCode == this.requestCode && resultCode == Activity.RESULT_OK && data != null) {
val imageUri: Uri? = data.data
//photo from gallery
if (imageUri != null) {
try {
contentResolver.notifyChange(imageUri, null)
val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, imageUri)
val bitmapDrawable = BitmapDrawable(bitmap)
bitmapDrawable.setBounds(
0,
0,
edit.width,
(edit.width.toDouble() * (bitmap.height.toDouble() / bitmap.width.toDouble())).toInt()
)
edit.append("\n")
var selectionCursor = edit.selectionStart
uris[bitmap] = imageUri
edit.text.insert(selectionCursor, "%#{[img]}@$")
selectionCursor = edit.selectionStart
val builder = SpannableStringBuilder(edit.text)
builder.setSpan(
ImageSpan(bitmapDrawable),
selectionCursor - "%#{[img]}@$".length,
selectionCursor,
1
)
edit.text = builder
edit.setSelection(selectionCursor)
edit.append("\n")
edit.requestFocus()
} catch (e: FileNotFoundException) {
e.printStackTrace()
}
}
}
но когда я пытаюсь использовать тот же Uri, чтобы вставить картинку, она не отображается, хотя делаю всё то же самое, вот код:
@Suppress("DEPRECATION")
private fun onCreateSpan(index:Int, uri: Uri){ //function for get images in upgrade mod
contentResolver.notifyChange(uri, null)
val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, uri) //get Bitmap
val bitmapDrawable = BitmapDrawable(bitmap) //get drawable from bitmap
bitmapDrawable.setBounds(
0,
0,
edit.width,
(edit.width.toDouble() * (bitmap.height.toDouble() / bitmap.width.toDouble())).toInt()
)
val builder = SpannableStringBuilder(edit.text)
builder.setSpan(
ImageSpan(bitmapDrawable, ImageSpan.ALIGN_BASELINE),
index,
index+"%#{[img]}@$".length,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE
)
edit.text = builder
edit.setSelection(edit.selectionStart)
edit.requestFocus()
}
важно понимать, что "%#{[img]}@$" заменяется, но вместо него пустота, а должно быть изображение