TextView加载Html文本显示图片问题
2017-12-07 11:58
756 查看
最优实现方案,异步加载图片本人使用ImageLoader,各位也可以使用其他工具加载获得Bitmap类型图片
图片超出view显示宽度时缩放到view显示宽度,否则显示图片在手机中的实际大小
stackoverflow参考链接
图片超出view显示宽度时缩放到view显示宽度,否则显示图片在手机中的实际大小
代码——使用kotlin编写
skuDetailsIntroTv.movementMethod = LinkMovementMethod.getInstance() //设置连接可点击跳转 skuDetailsIntroTv.text = Html.fromHtml(sku.getViewProdIntro(), Html.ImageGetter { source -> val drawable = LevelListDrawable() ImageLoader.getInstance().loadImage(source, object : ImageLoadingListener { override fun onLoadingComplete(imageUri: String?, view: View?, result: Bitmap?) { if (result != null) { val bitmapDrawable = BitmapDrawable(resources, result) //添加一层bitmap drawable.addLevel(1, 1, bitmapDrawable) //根据手机像素密度重新计算 val scale = resources.displayMetrics.density val bitmapWidth = Math.round(result.width * scale) val bitmapHeight = Math.round(result.height * scale) //防止图片超出view显示区域宽度 val viewContentWidth = skuDetailsIntroTv.width - skuDetailsIntroTv.paddingLeft - skuDetailsIntroTv.paddingRight val width = if (viewContentWidth < bitmapWidth) viewContentWidth else bitmapWidth //等比例缩放 val height = bitmapHeight * width / bitmapWidth drawable.setBounds(0, 0, width, height) drawable.level = 1 //异步加载的drawable需要重新加载,invalidate()无效果,暂时的解决方案 val text = skuDetailsIntroTv.text skuDetailsIntroTv.text = text skuDetailsIntroTv.refreshDrawableState() } } override fun onLoadingStarted(imageUri: String?, view: View?) { } override fun onLoadingCancelled(imageUri: String?, view: View?) { } override fun onLoadingFailed(imageUri: String?, view: View?, failReason: FailReason?) { } }) drawable }, null)
效果图片展示
html测试数据——图片url域名做了*处理
<p> <span style="font-size:14px;">asdfasfdasdfasfda</span> </p> <p> <strong><em><u><span style="color:#E56600;">asfdaslkasfd舒服舒服</span></u></em></strong> </p> <p> lasfsajfdasfdk!@$%!@$#!@$ </p> <p> <span style="font-size:24px;background-color:#FFE500;"><strong><u>文本输入</u></strong></span> </p> <p> 文本输入 </p> <p> 本文本 </p> <p> </p> <p> <img src="http://test.******.com:6080/hca/api/business/getfile/Z3JvdXAxL00wMC8wMC8xQy93S2hRVzFvb3BSV0FkTGJkQUFBdXRRR2dBNjA3MzY5MDY4"/> </p>
stackoverflow参考链接
相关文章推荐
- Android开发技巧——TextView加载HTML的图片及代码显示问题
- Android开发技巧——TextView加载HTML的图片及代码显示问题
- Android中Textview显示带html文本二-------【Textview显示本地图片】
- 【菜鸟学安卓】- TextView 显示Html 二 图片大小的显示问题
- TextView显示html中的img图片问题
- Android Textview显示带html文本及本地图片
- Android在TextView中显示html标签以及异步加载网页图片
- TextView显示html信息、在文本下面添加下划线、中划线、设置图片
- 汇总——TextView使用Glide极速加载HTML复文本中的图片
- Android TextView加载HTMl图文之让图片居中显示
- Android中Textview显示带html文本三-------【Textview显示网络图片】
- TextView加载html代码显示图片,并且支持图片放大功能
- Android中Textview显示带html文本二-------【Textview显示本地图片】
- 【菜鸟学安卓】- TextView 显示Html 一 解决图片显示不了的小问题
- Android中Textview显示带html文本二-------【Textview显示本地图片】
- Android中Textview显示带html文本【Textview显示本地图片】
- Android WebView加载Html文本不能适配,以及图片中间有空白的问题
- Android中Textview显示带html文本二-------【Textview显示本地图片】
- Android TextView加载HTMl图文时,图片溢出界面问题解决
- Android中Textview显示带html文本三-------【Textview显示网络图片】