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

方法一:重写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/904107  

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

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




  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值