android富文本 加载带图片的html<drawable为null的bug>
来源:互联网 发布:手机淘宝查看卖家电话 编辑:程序博客网 时间:2024/05/17 23:14
textView加载带图片的html
在android中textView中setText中加入富文本以及webView嵌入url是android交互html最简单的两种方式;
最近在项目中涉及到富文本;
当不考虑html中图片加载时候比较简单:
Spanned spanned = = Html.fromHtml(html);tvContent.setText(spanned );
只需要提供html即可,但是如果html中有pic时候 则会出现以下的情况;
可以看到本该出现pic的地方出现了空格;所以在填充富文本时候需要对图片处理一下,在Html中有两个方法:
public static Spanned fromHtml(String source) { } public static Spanned fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) { }
其中三参的方法gormHtml可以处理图片的问题,需要匿名内部类实现 ImageGetter,第三个参数置为null:
ImageGetter imgGetter = new Html.ImageGetter() { public Drawable getDrawable(String source) { Drawable drawable = null; URL url; try { url = new URL(source); Drawable.createFromStream(url.openStream(), ""); } catch (Exception e) { e.printStackTrace(); return null; } drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); return drawable; } }; CharSequence charSequence = Html.fromHtml(html, imageGetter, null); tvContent.setText(charSequence );
这样就很明了了,imageGetter就是根据url来获取网络图片填充富文本的,很明显是一个好事操作,所以需要开子线程,而text的setText又是跟新UI的操作;这一点必须注意,不然你的drawable会为空,text无法填充富文本;
但是在填充过程中当html中pic比较多的时候回有部分获取不到;接下来就需要你在handler中控制一下就ok~ 下面来看最终代码:
/** * * @param imageUrl * @return */ public Drawable getImageFromNetwork(String imageUrl) { URL myFileUrl = null; Drawable drawable = null; try { myFileUrl = new URL(imageUrl); HttpURLConnection conn = (HttpURLConnection) myFileUrl .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); drawable = Drawable.createFromStream(is, null); is.close(); } catch (Exception e) { e.printStackTrace(); return null; } return drawable; } Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 0x101) { //tvContent.setText((CharSequence) msg.obj); if (drawable == null){ bindData(); return false; } if (ncontent != null){ tvContent.setText((CharSequence) msg.obj); tvContent.setClickable(true); tvContent.setMovementMethod(LinkMovementMethod.getInstance()); } } return false; } }); private void bindData() { tvTitle.setText(mInfo.getNtitle()); ncontent = mInfo.getNcontent(); new Thread(new Runnable() { Message msg = Message.obtain(); @Override public void run() { Html.ImageGetter imageGetter=new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { //String source1 = source; ///Content/ if (source.substring(0,8).equals("/Content")){ source = Constant.BASE_URL + source; } drawable = getImageFromNetwork(source); if (drawable != null){ drawable.setBounds(0,0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); }else if (drawable == null){ //bindData(); return null; } return drawable; } }; //Spanned spanned = Html.fromHtml(ncontent, imageGetter, null); CharSequence charSequence = Html.fromHtml(ncontent, imageGetter, null); msg.what = 0x101; msg.obj = charSequence; if (mHandler!= null){ mHandler.sendMessage(msg); } } }).start(); toolbarTitle.setText(mInfo.getNtitle()); String nsubtitle = mInfo.getNtitle(); if (nsubtitle.length() > 10){ String nsubtitle_new = nsubtitle.substring(0, 10); toolbarTitle.setText(nsubtitle_new + "..."); }else{ toolbarTitle.setText(nsubtitle); } tvTime.setText(mInfo.getNsendtime()); }
这样图片就显示了;希望大家在阅读之后多提建议,期待成长;
阅读全文
3 0
- android富文本 加载带图片的html<drawable为null的bug>
- iOS UIlabel怎么加载html字符串 富文本的用法
- WebView加载富文本(html)的方法
- webview的富文本加载
- WebView加载富文本(解决富文本内部图片不能加载,一直闪屏问题)的方法
- iOS 富文本加载 HTML
- TextView加载带图片的Html解决方案
- Android drawable 玩转自定义图片以及bug的解决
- Android drawable 玩转自定义图片以及bug的解决
- 富文本带属性的字符串NSMutableAttributedString
- android富文本的实现
- HTML+CSS基础 img标签alt属性 当图片加载失败的时候显示为文本
- 使用ImageLoader显示圆角图片、圆形图片、加载drawable的BUG
- 富文本编辑器ueditor的简单实现,及编辑器加载的图片不自适应的问题
- 富文本编辑器上传图片的问题
- 文字+图片的混编(富文本)
- Android Drawable来加载网络上的图片
- Android WebView加载Html文本不能适配,以及图片中间有空白的问题
- Activity之间传递bitmap
- spring-boot 文件上传
- ueditor中table没有边线及修改边框颜色问题
- java图片验证码
- web.xml配置详解
- android富文本 加载带图片的html<drawable为null的bug>
- java实现手机扫二维码登陆
- 浅谈list和truple(python3)
- SpringBoot+Mybatis 完整实例 增删查改
- [日常训练] 单词
- poj Stall Reservations(贪心)
- 从零开始开发一款Android App
- vi 常用命令
- android开发之四种基本布局