富文本
什么是富文本?
可能大家要问了,富文本是什么?怎么是这个“富”来,好奇怪啊……第一次接触的时候我也不知道什么是富文本,但是后来老师给举了一个例子就明白了。都喜欢用QQ聊天,有时候我们会给文字设置颜色让其特殊显示或者添加表情,让聊天更加丰富。这些包含特殊显示文字和图片的文本其实就是富文本。
富文本,可以支持一部分的HTML,也可以动态添加的一些图片。
如何使用富文本
如何使用富文本这个问题其实在我之前的博客(Android UI设计——TextView控件 )也详细的讲述过了,但是在这里我还是决定拿出来在单独的开一篇博客。
获得富文本有两种方法:
- 一种是在标签中传src值,然后将src值传入ImageGetter的对象中通过反射来获得src值对应的图片的id。
textFu = (TextView) findViewById(R.id.textFu);
ImageGetter imageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
int id = R.mipmap.ic_launcher;
//方法一:通过反射获得图片id。
Class clazz =R.mipmap.class;
try {
Field field = clazz.getDeclaredField(s);
id = field.getInt(clazz);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Drawable drawable = getResources().getDrawable(id);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
}
};
Spanned spanned = Html.fromHtml("这是一个<font color='#00ffff'>富文本</font>,然后加一个图标<img src='a_merchant_06_click'/>",imageGetter ,null);
textFu.setText(spanned);
textFu.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
- 第二种是在标签中不传src值,然后通过ImageGetter的对象自己获得图片的id。
textFu = (TextView) findViewById(R.id.textFu);
ImageGetter imageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
//方法二,直接通过R.mipmap.a_merchant_06_click,得到图片。
Drawable drawable = getResources().getDrawable(R.mipmap.a_merchant_06_click);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
return drawable;
}
};
Spanned spanned = Html.fromHtml("这是一个<font color='#00ffff'>富文本</font>,然后加一个图标<img src=''/>",imageGetter ,null);
textFu.setText(spanned);
textFu.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);