Android TextView富文本的使用

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

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

1)html中常用的标签:

HTML 标题(Heading)是通过

-

等标签进行定义的。例如:

This is a heading

HTML 段落是通过

标签进行定义的。例如:

This is a paragraph.

HTML 链接是通过 标签进行定义的。例如:This is a link

HTML 图像是通过 标签进行定义的。例如:

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

还有一些其他标签:
字体加大
字体缩小        
加删除线

上标字    
下标字

以上都可以通过texString tv1conent = "" + "android 富文本显示" + "
" + "" + "昆明景色宜人四季如春" + "";

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

2)显示图片的文本

运用html中的img标签:

 String viewContent = "" + "" + "被选中的状态" + "";

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

你可能感兴趣的:(Android(3G开发)())