Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android:如何在TextView實現圖文混排

android:如何在TextView實現圖文混排

編輯:關於Android編程

我們通常在TextView文本中設置文字。可是如何設置圖文混排呢?

我就在這裡寫一個例子 。我們需要用到一點簡單的HTML知識

在TextView中預訂了一些類似HTML的標簽,通過標簽可以使TextView控件顯示不同顏色,大小,字體的文字

:設置顏色和字體

:設置大號

:設置小號

:斜體、粗體

:鏈接地址

:插入圖片

在drawable中存入我們的圖片。

然後我們在布局文件中添加一個TextView控件

<a><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"><font><big><small>

    <textview android:id="@+id/tv_text" android:layout_width="wrap_content" android:layout_height="wrap_content">

</textview></small></big></font></linearlayout></a>
在MainActivity.clss文件中

寫一行HTML形式的代碼,並用一個字符串接收它

String html="草莓";
這行代碼是什麼意思呢?大家也看了上面的HTML簡單的標簽。是字體,所以之間的是文字,是圖片,src是圖片的名稱

然後我們要解釋這行HTML代碼,就用到了這個方法

Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)
其中source是字符串形式的 也就是我們需要解釋的HTML代碼。ImageGetter就是圖片的資源,TagHandler就標簽在這裡設置為null就行。

那麼ImageGetter該怎麼寫呢?我們可以new 一個ImageGetter對象 會發現裡面有一個方法

			public Drawable getDrawable(String source) {
			}
我們可以使用輸出日志信息看看這個方法裡面傳遞的source是什麼

\

發現了嗎?就是我們Html代碼裡面的 內容

由於返回的是Drawable類型的資源我們首先new 一個Drawable對象,然後通過getSource()的方法獲取圖片資源

最後一定要通過setBounds()方法設置一下圖片的大小。否則是不會顯示的哦

 

				if(source.equals("http://blog.csdn.net/su20145104009/article/details/‘strawberry’")){
					Drawable draw=getResources().getDrawable(R.drawable.http://blog.csdn.net/su20145104009/article/details/strawberry);
					draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
					return draw;
				}

附上運行結果圖片

 

\

MainActivity.class的全部代碼如下:

package com.example.textview;

import javax.xml.transform.Source;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

	private TextView tv_text;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv_text=(TextView) findViewById(R.id.tv_text);
		String html="草莓";
		CharSequence text=Html.fromHtml(html, new ImageGetter() {
			
			public Drawable getDrawable(String source) {
				//根據圖片資源ID獲取圖片
				Log.d("source", source);
				if(source.equals("http://blog.csdn.net/su20145104009/article/details/‘strawberry’")){
					Drawable draw=getResources().getDrawable(R.drawable.http://blog.csdn.net/su20145104009/article/details/strawberry);
					draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
					return draw;
				}
				return null;
			}
		}, null);
		tv_text.setText(text);
	}
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved