Android UI设计小知识——富文本

来源:互联网 发布:工业之家软件 编辑:程序博客网 时间:2024/05/20 00:12

富文本

  什么是富文本? 
  可能大家要问了,富文本是什么?怎么是这个“富”来,好奇怪啊……第一次接触的时候我也不知道什么是富文本,但是后来老师给举了一个例子就明白了。都喜欢用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);

这里写图片描述

0 0
原创粉丝点击