1. 程式人生 > >Android TextView裡直接顯示圖片的三種方法

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  

下為效果圖,上下兩幅圖分別對應第二種和第三種方法: