Android TextView里直接显示图片的三种方法

Android TextView里直接显示图片的三种方法方法一 重写 TextView 的 onDraw 方法 也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系 一般如果字体是在图片上重叠的推荐这样写 时间关系 这个不付源码了 方法二 利用 TextView 支持部分 Html 的特性 直接用 api 赋图片 代码如下 第一种方法在 TextView 中显示图片 Stringhtml ImageGetteri ne

方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系。一般如果字体是在图片上重叠的推荐这样写。时间关系,这个不付源码了。


方法二:利用TextView支持部分Html的特性,直接用api赋图片。代码如下:

//第一种方法在TextView中显示图片 String html = "<img src='" + R.drawable.circle + "'/>"; ImageGetter imgGetter = new ImageGetter() { @Override public Drawable getDrawable(String source) { // TODO Auto-generated method stub int id = Integer.parseInt(source); Drawable d = getResources().getDrawable(id); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); return d; } }; CharSequence charSequence = Html.fromHtml(html, imgGetter, null); textView1.setText(charSequence); textView1.append("您好 ");


注意下面这句话:String html = “<img src='” + R.drawable.circle + “‘/>”; img src = 后面除了”之外还有个’号。如果去掉这两个’号就变成了String html = “<img src=” + R.drawable.circle +”/>”; 是会报错的,因为src直接等于了一个数字,是解析不了的。


方法三: 用ImageSpan和SpannableString,代码如下:

//第2种方法在TextView中显示图片 Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.hanguo); ImageSpan imgSpan = new ImageSpan(this, b); SpannableString spanString = new SpannableString("icon"); spanString.setSpan(imgSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView2.setText(spanString); textView2.append("中新网4月27日电 据央视报道,韩国国务总理郑烘原于当地时间27日上午召开发布会,称自己应对韩国“岁月号”沉船事件负责,宣布辞职,并希望家属能原谅及理解他的决定。");


这种方法是最直观的,通过Bitmap或Drawable对象得到ImageSpan对象,再新建SpannableString对象,设置span的内容就ok了。其实SpannableString很强大,如在EditText里将部分文本高亮、下划线、斜体、插入表情都可以用它,详见链接:http://gundumw100.iteye.com/blog/  

http://blog.csdn.net/rockcoding/article/details/

下为效果图,上下两幅图分别对应第二种和第三种方法:

Android TextView里直接显示图片的三种方法



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库备份一张表

    数据库备份一张表数据库备份表备份方案一:备份createtable[备份名]asselect*from[表名];恢复truncatetableorg_group;insertintoorg_groupselect*from[备份名];说明此种情况适用于,同一个数据库,需要备份某张表。备份方案二:备份oracle用户终端执行:exp[用户名]/[密码]tables=[表一],[表二]file=/home/oracle/table.dmp恢复

    2022年5月14日
    122
  • SQL删除多表关联数据的三种方法

    SQL删除多表关联数据的三种方法1.级联删除 createtablea(id varchar(20)primarykey,passwordvarchar(20)notnull)createtableb(idintidentity(1,1) primarykey,namevarchar(50)notnull,userIdvarchar(20),fo

    2022年7月17日
    72
  • java中“53”个关键字(含2个保留字)

    java中“53”个关键字(含2个保留字)1.java的关键字(keyword)有多少个?   51+2个保留字=53个关键字(java的关键字都是小写的!!)    2.java的保留字(reserve word)有多少个?问题:分别是什么?    2个保留字     Java语言的的保留字是指预留的关键字    1).const  有道释义:n. 常量,

    2022年7月8日
    23
  • 怎么修改mysql的表名称_mysql怎么修改表名?「建议收藏」

    怎么修改mysql的表名称_mysql怎么修改表名?「建议收藏」本篇文章将和大家讲述如何快速修改mysql表名,有同样需要的朋友学习一下吧,希望你看后能有所帮助。mysql修改表名的方法:具体步骤:打开cmd->输入“mysql-uroot-p”->输入密码,进入mysql->输入“altertablerenameto/asnew_tablename;”下面的代码包括了创建表的过程:#创建表结构.这样的建表方式,不仅仅是表的结构…

    2022年5月31日
    145
  • JavaScript——利用正则表达式实现二代身份证号码的验证

    JavaScript——利用正则表达式实现二代身份证号码的验证HTML<divclass=”login-header”><aid=”link”>点击,弹出登录框</a></div><divclass=”box”id=”box”><divclass=”hd”id=”drop”>注册信息(可以拖拽)<spanid=”box_close”>[关闭]</span></div><divclas

    2022年6月27日
    34
  • 新手上路系列 Web服务器搭建篇——IIS的搭建

    新手上路系列 Web服务器搭建篇——IIS的搭建之前公司产品需要使用到IIS这块,小白入门的自己看着网上的教程,自己摸索着前进…学会走不急着跑,先稳固一下讲讲简单的IISWeb服务器怎么搭,让不太涉及Web的童鞋及自己(温故)快速上手。要学的东西真的是很多,学无止境啊!!不说废话,简单的IIS篇先走起。。一、IIS服务器的搭建1.启用功能:首先,我们以Windows10版系统为例,右击“我的电脑”点击属性,进入Win…

    2022年5月28日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号