激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android中使用TextView實現圖文混排的方法

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

2021-05-31 15:49susu的Dream Android

向TextView或EditText中添加圖像比直接添加文本復雜一點點,需要用到標簽。接下來通過本文給大家介紹Android中使用TextView實現圖文混排的方法,希望對大家有所幫助

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

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

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

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

我們通常在TextView文本中設置文字??墒侨绾卧O置圖文混排呢?

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

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

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

在drawable中存入我們的圖片。

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

?
1
2
3
4
5
6
7
8
9
<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形式的代碼,并用一個字符串接收它

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

這行代碼是什么意思呢?大家也看了上面的HTML簡單的標簽。<font>是字體,所以<font>和</font>之間的是文字,<img>是圖片,src是圖片的名稱
然后我們要解釋這行HTML代碼,就用到了這個方法

?
1
Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)

其中source是字符串形式的 也就是我們需要解釋的HTML代碼。ImageGetter就是圖片的資源,TagHandler就標簽在這里設置為null就行。
那么ImageGetter該怎么寫呢?我們可以new 一個ImageGetter對象 會發現里面有一個方法

?
1
2
public Drawable getDrawable(String source) {
}

我們可以使用輸出日志信息看看這個方法里面傳遞的source是什么

發現了嗎?就是我們Html代碼里面的 內容<img src='strawberry'>
由于返回的是Drawable類型的資源我們首先new 一個Drawable對象,然后通過getSource()的方法獲取圖片資源
最后一定要通過setBounds()方法設置一下圖片的大小。否則是不會顯示的哦

?
1
2
3
4
5
if(source.equals("‘strawberry'")){
Drawable draw=getResources().getDrawable(R.drawable.strawberry);
draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
return draw;
}

MainActivity.class的全部代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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實現圖文混排的方法,希望對大家有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜视频播放 | 手机国产乱子伦精品视频 | 免费小毛片 | 成人不卡免费视频 | 毛片在哪里看 | www.54271.com | 手机av免费电影 | 久久久av亚洲男天堂 | 日韩av电影在线观看 | 国产免费人做人爱午夜视频 | 国内精品久久久久久影视8 国产一区二区成人在线 | 一级在线视频 | 视频在线色 | 久久综合久久美利坚合众国 | www.9191.com| 日韩精品dvd | 免费国产不卡午夜福在线 | 午夜天堂在线视频 | 成人激情视频网站 | 视频二区国产 | 久久69精品久久久久久国产越南 | 欧美国产成人在线 | 国产激情精品一区二区三区 | 草草视频免费 | 国产精品99一区二区 | 日韩精品一二三区 | 国产精品久久久免费观看 | 曰批全过程120分钟免费69 | 黄色大片免费看 | 国产精品成人亚洲一区二区 | 国产亚洲美女精品久久久2020 | 91短视频在线播放 | 日本中文字幕网址 | 日本一区二区不卡高清 | 久久精品欧美电影 | 免费网站看毛片 | av电影手机在线看 | 美乳在线观看 | 日本a大片 | 免费毛片儿 | 免费专区 - 91爱爱 |