Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中使用TextView實現圖文混排的方法

Android中使用TextView實現圖文混排的方法

編輯:關於Android編程

向TextView或EditText中添加圖像比直接添加文本復雜一點點,需要用到<img>標簽。

<img>只有一個src屬性,該屬性原則上應該指向一個圖像地址或可以找到某個圖像資源的唯一標識。但要注意的是,系統並不會直接根據src屬性所指的值自動獲取和顯示圖像,這一切都需要我們去做。說白了,src屬性指的是什麼只有開發者自己知道。開發者需要告訴系統src屬性到底指的是什麼,然後系統才會知道怎麼做。

解析src屬性值需要ImageGetter對象的getDrawable方法來完成。ImageGetter是一個接口。使用Html.fromHtml會使這一過程變得簡單。

public static Spanned fromHtml(String source,ImageGetter imageGetter, TagHandler tagHandler);

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

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

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

<font>:設置顏色和字體
<big>:設置大號
<small>:設置小號
<i>\<b>:斜體、粗體
<a>:鏈接地址
<img>:插入圖片

在drawable中存入我們的圖片。

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<TextView 
android:id="@+id/tv_text" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
</LinearLayout> 

在MainActivity.clss文件中

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

String html="<font>草莓</font><img src=‘strawberry'>"; 

這行代碼是什麼意思呢?大家也看了上面的HTML簡單的標簽。<font>是字體,所以<font>和</font>之間的是文字,<img>是圖片,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代碼裡面的 內容<img src='strawberry'>
由於返回的是Drawable類型的資源我們首先new 一個Drawable對象,然後通過getSource()的方法獲取圖片資源
最後一定要通過setBounds()方法設置一下圖片的大小。否則是不會顯示的哦

if(source.equals("‘strawberry'")){ 
Drawable draw=getResources().getDrawable(R.drawable.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="<font>草莓</font><img src=‘strawberry'>"; 
CharSequence text=Html.fromHtml(html, new ImageGetter() { 
public Drawable getDrawable(String source) { 
//根據圖片資源ID獲取圖片 
Log.d("source", source); 
if(source.equals("‘strawberry'")){ 
Drawable draw=getResources().getDrawable(R.drawable.strawberry); 
draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight()); 
return draw; 
} 
return null; 
} 
}, null); 
tv_text.setText(text); 
} 
}

以上所述是小編給大家介紹的Android中使用TextView實現圖文混排的方法,希望對大家有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved