Android中使用TextView實(shí)現(xiàn)圖文混排的方法
向TextView或EditText中添加圖像比直接添加文本復(fù)雜一點(diǎn)點(diǎn),需要用到<img>標(biāo)簽。
<img>只有一個(gè)src屬性,該屬性原則上應(yīng)該指向一個(gè)圖像地址或可以找到某個(gè)圖像資源的唯一標(biāo)識(shí)。但要注意的是,系統(tǒng)并不會(huì)直接根據(jù)src屬性所指的值自動(dòng)獲取和顯示圖像,這一切都需要我們?nèi)プ?。說(shuō)白了,src屬性指的是什么只有開發(fā)者自己知道。開發(fā)者需要告訴系統(tǒng)src屬性到底指的是什么,然后系統(tǒng)才會(huì)知道怎么做。
解析src屬性值需要ImageGetter對(duì)象的getDrawable方法來(lái)完成。ImageGetter是一個(gè)接口。使用Html.fromHtml會(huì)使這一過(guò)程變得簡(jiǎn)單。
public static Spanned fromHtml(String source,ImageGetter imageGetter, TagHandler tagHandler);
我們通常在TextView文本中設(shè)置文字。可是如何設(shè)置圖文混排呢?
我就在這里寫一個(gè)例子 。我們需要用到一點(diǎn)簡(jiǎn)單的HTML知識(shí)
在TextView中預(yù)訂了一些類似HTML的標(biāo)簽,通過(guò)標(biāo)簽可以使TextView控件顯示不同顏色,大小,字體的文字
<font>:設(shè)置顏色和字體
<big>:設(shè)置大號(hào)
<small>:設(shè)置小號(hào)
<i>\<b>:斜體、粗體
<a>:鏈接地址
<img>:插入圖片
在drawable中存入我們的圖片。
然后我們?cè)诓季治募刑砑右粋€(gè)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形式的代碼,并用一個(gè)字符串接收它
String html="<font>草莓</font><img src=‘strawberry'>";
這行代碼是什么意思呢?大家也看了上面的HTML簡(jiǎn)單的標(biāo)簽。<font>是字體,所以<font>和</font>之間的是文字,<img>是圖片,src是圖片的名稱
然后我們要解釋這行HTML代碼,就用到了這個(gè)方法
Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)
其中source是字符串形式的 也就是我們需要解釋的HTML代碼。ImageGetter就是圖片的資源,TagHandler就標(biāo)簽在這里設(shè)置為null就行。
那么ImageGetter該怎么寫呢?我們可以new 一個(gè)ImageGetter對(duì)象 會(huì)發(fā)現(xiàn)里面有一個(gè)方法
public Drawable getDrawable(String source) {
}
我們可以使用輸出日志信息看看這個(gè)方法里面?zhèn)鬟f的source是什么
發(fā)現(xiàn)了嗎?就是我們Html代碼里面的 內(nèi)容<img src='strawberry'>
由于返回的是Drawable類型的資源我們首先new 一個(gè)Drawable對(duì)象,然后通過(guò)getSource()的方法獲取圖片資源
最后一定要通過(guò)setBounds()方法設(shè)置一下圖片的大小。否則是不會(huì)顯示的哦
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) {
//根據(jù)圖片資源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實(shí)現(xiàn)圖文混排的方法,希望對(duì)大家有所幫助。
相關(guān)文章
Android從Fragment跳轉(zhuǎn)到其他Activity的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android從Fragment跳轉(zhuǎn)到其他Activity的簡(jiǎn)單實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動(dòng)效果(實(shí)例代碼)
這篇文章主要介紹了Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動(dòng)效果(實(shí)例代碼),需要的朋友可以參考下2017-10-10
Android 判斷是否能真正上網(wǎng)的實(shí)例詳解
這篇文章主要介紹了Android 判斷是否能真正上網(wǎng)的實(shí)例詳解相關(guān)資料,希望通過(guò)本文大家能夠掌握判斷是否上網(wǎng)的方法,需要的朋友可以參考下2017-10-10
Android系統(tǒng)對(duì)話框使用詳解(最詳細(xì))
這篇文章主要介紹了Android系統(tǒng)對(duì)話框使用詳解(最詳細(xì)),需要的朋友可以參考下2017-10-10
Android實(shí)現(xiàn)背景圖滑動(dòng)變大松開回彈效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)背景圖滑動(dòng)變大松開回彈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
AndroidStudio升級(jí)到3.0的新特性和注意事項(xiàng)小結(jié)
這篇文章主要介紹了AndroidStudio升級(jí)到3.0的新特性和注意事項(xiàng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
Android基于OpenCV實(shí)現(xiàn)圖像脫色
脫色是將彩色圖像轉(zhuǎn)換為灰度圖像的過(guò)程。同時(shí),它也是數(shù)字打印,風(fēng)格化的黑白照片渲染以及許多單通道圖像處理應(yīng)用程序中的基本工具。本文講述基于OpenCV實(shí)現(xiàn)圖像脫色的步驟2021-06-06
Android響應(yīng)事件onClick方法的五種實(shí)現(xiàn)方式小結(jié)
本篇文章主要介紹了Android響應(yīng)onClick方法的五種實(shí)現(xiàn)方式小結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03

