做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

更多相关文章

  1. android 顶部Tab实现及原理
  2. Android(安卓)UI设计小知识——富文本
  3. BroadcastReceiver与Notification的综合应用自定义Action的调用
  4. 1与2(CSS与HTML).1—— 一个比较通用的网站主页面
  5. android listview adapter中设置点击直接position被重用问题解决
  6. Android(安卓)launcher动态Icon的实现方法
  7. iOS设备蓝牙类库的选择
  8. Android(安卓)实现按钮 跳转到某网页
  9. android风格统一化修改上方标题栏颜色

随机推荐

  1. Android最佳实践(七)之AppCompat 23.2.0
  2. 【062】Android(安卓)开发入门学习
  3. Android学习系列--索引贴
  4. android 布局属性
  5. Android(安卓)TextEdit 文本框设置
  6. Android系统自带样式(@android:style/)
  7. android中的布局文件
  8. 学习笔记——android layout view 属性
  9. Android线性布局
  10. Android多渠道打包(五):360多渠道打包+