Android TextView富文本的使用

来源:互联网 发布:iphone软件源大全 编辑:程序博客网 时间:2024/06/08 09:57

做Android的都知道textView这个控件,在常用不过啦,都知道它可以显示不同 的颜色的文本,但是同一个textView 控件,同一段文字能够根据 自己的需要显示 不同的颜色、识别emoj如同请求表情、网页中的图片、html标签的富文本等;之前自己也多次在项目中用到过,今天做下简单的总结,也希望对其他朋友有所帮助。

首先是识别html中各种标签:

1)html中常用的标签:

HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的。例如:<h1>This is a heading</h1>

HTML 段落是通过 <p> 标签进行定义的。例如:<p>This is a paragraph.</p>

HTML 链接是通过 <a> 标签进行定义的。例如:<a href="http://www.w3school.com.cn">This is a link</a>

HTML 图像是通过 <img> 标签进行定义的。例如:<img src="w3school.jpg" width="104" height="142" />

HTML通过加粗强调文本例如 <em>强调文本(通常是斜体加黑体)</em>
HTML通过斜体加黑体强调文本例如<strong></strong> 加重文本(通常是斜体加黑体)
HTML通设置文本字体的大小和颜色例如<font size="" color=""></font> 设置字体大小从1到7,颜色使用名字或RGB的十六进制值

还有一些其他标签:
<big></big> 字体加大
<SMALL></SMALL> 字体缩小        
<STRIKE></STRIKE> 加删除线

<sup></SUP> 上标字    
<SUB></SUB> 下标字

以上都可以通过texString tv1conent = "<font color='#ff0000'>" + "android 富文本显示" + "</font><br/>" + "<font color='#00ff00'>" + "昆明景色宜人四季如春" + "</font>";

tv1.setText(Html.fromHtml(tv1conent));tView 来实现:

2)显示图片的文本

运用html中的img标签:

 String viewContent = "<img src='" + R.mipmap.circle_icon_good_selected + "'>" + "<font color='#0000ff'>" + "被选中的状态" + "</font>";

tv2.setText(Html.fromHtml(viewContent2, new Html.ImageGetter() {
                        @Override
                        public Drawable getDrawable(String s) {
                            int drawableId = Integer.parseInt(s);
                            Drawable drawable = getResources().getDrawable(drawableId);
                            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                            return drawable;
                        }
                    }, null));

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

除啦通过以上那这个呢方式来实现也可以使用一下两种方法:

  1. 通过xml的布局文件,在textView的xml中设置drawableLef 、tdrawableRight、drawableBottom、drawableEnd、drawableStart、drawableTop来设置图片显示的方向;设置drawablePadding可以设置图片和文字的距离
  2. 也可以使用Java代码的形式 来设置 Drawable drawable = getResources().getDrawable(R.mipmap.circle_icon_good_selected);
                        tv2.setCompoundDrawables(drawable, null, null, null);    drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());需要注意的是咋使用代码设置textView张显示图片时必须要设置setBounds()这一属性,否则图片会显示不出来。
  3. 其实还有方式也可以显示富文本内容可以使用spannableString
  4.   SpannableStringBuilder builder = new SpannableStringBuilder();
            int startPoint = builder.length();
            builder.append("[abstract]");//占位使用
            int endPoint = builder.length();
            MyImageSpan imageSpan = new MyImageSpan(this, R.mipmap.circle_icon_good_normal);
            builder.setSpan(imageSpan, startPoint, endPoint, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            builder.append(" ");
    //        builder.append(brief);
            tv5.setText(builder);
            //第二种形式
            String str = "这是设置TextView部分文字背景颜色和前景颜色的哭大哭偷笑大笑demo!";
            int bstart = str.indexOf("背景");
            int bend = bstart + "背景".length();
            int fstart = str.indexOf("前景");
            int fend = fstart + "前景".length();
            SpannableStringBuilder style = new SpannableStringBuilder(str);
            style.setSpan(new BackgroundColorSpan(Color.RED), bstart, bend, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            style.setSpan(new ForegroundColorSpan(Color.RED), fstart, fend, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
            tv6.setText(style);
  5. demo下载地址:http://download.csdn.net/download/smxueer/9951865