Android 图文混排(二) EditText实现图文显示

总体思路如下:

通过ImageSpan来放置图片,再创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像,最后用ImageSpan对象替换你指定的字符串,完成EditText的图文混排

具体操作:
1、选择要插入的图片,这里我把图片上传到了服务器,服务器回给我一个网络访问地址,这样可以结合Android 图文混排(一) TextView实现图文显示形成一个发布和现实的过程。获得服务器的地址,然后创建ImageSpan对象

Bitmap loadedImage = BitmapFactory.decodeFile(path);
loadedImage = Bitmap.createBitmap(loadedImage, 0, 0, loadedImage.getWidth(), loadedImage.getHeight(), matrix,        true);
ImageSpan imageSpan = new ImageSpan(context, loadedImage);

2、创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像,SpannableString的值我们就用html的img标签,src里面我们放置服务器给我们的网络访问地址

String tempUrl = "<img src=\"" + url + "\" />";
SpannableString spannableString = new SpannableString(tempUrl);

3、用ImageSpan对象替换你指定的字符串,并将选择的图片追加到EditText中光标所在位置

spannableString.setSpan(imageSpan, 0, tempUrl.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 将选择的图片追加到EditText中光标所在位置
int index = et.getSelectionStart(); 
// 获取光标所在位置
Editable edit_text = et.getEditableText();
if (index < 0 || index >= edit_text.length()) {
    edit_text.append(spannableString);
} else {
    edit_text.insert(index, spannableString);
}

4、最后,为了不让图片挤在一起,我们在图片后面加上一个换行

edit_text.insert(index + spannableString.length(), "\n");
System.out.println("插入的图片:" + spannableString.toString());

附上效果图

《Android 图文混排(二) EditText实现图文显示》 S60124-174216.jpg
《Android 图文混排(二) EditText实现图文显示》 S60124-174311.jpg
《Android 图文混排(二) EditText实现图文显示》 S60124-174320.jpg

如有什么不对或者不规范的地方请留言或私信我,非常感谢

传送门:
1、Android 图文混排(一) TextView实现图文显示
2、Android 图文混排(二) EditText实现图文显示
3、Android 图文混排(三)TextView图片点击

    原文作者:晓峰残月
    原文地址: https://www.jianshu.com/p/56ec5b2ded55
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞