HTML类可解析的标签

在手机上显示从网络端获取的数据有两种方式,一种是WebView,另一种是TextView,WebView大家都知道,功能强大但不灵活,下面主要说下TextView。
通过查看android.text.Html的源码,发现Textview可以解析以下html标签:
  • <a href="...">创建超文本链接
  • <b>黑体字
  • <big>字体加大
  • <blockquote>从两边缩进文本
  • <br>换行 插入换行符
  • <cite>引用,通常是斜体
  • <dfn>述语定义
  • <div align="...">用来排版大块HTML段落,也用于格式化表
  • <em>强调文本(通常是斜体加黑体)
  • <font size="..." color="..." face="...">设置字体大小从1到7,颜色使用名字或RGB的十六进制值
  • <h1>至<h6>标题
  • <i>斜体字
  • <img src="...">图片
  • <p>创建一个段落
  • <small>字体缩小
  • <strike>加删除线
  • <strong>加重文本(通常是斜体加黑体)
  • <sub>下标字
  • <sup>上标字
  • <tt>打字机风格的字体
  • <u>下划线
除了默认的一些标签,其还支持自定义标签,详见 http://www.cnblogs.com/mxgsa/archive/2012/11/15/2760256.html
Textview 通过HTML显示本地及资源目录图片详见 http://www.cnblogs.com/mxgsa/archive/2012/12/14/2816775.html
Textview 通过HTML显示网络图片详见 http://www.cnblogs.com/mxgsa/archive/2012/12/20/2823666.html

代码

public class MainActivity extends Activity {
    private TextView tv2;
    private TextView tv3;
    private TextView tv4;
    private TextView tv5;
    private TextView tv6;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv2 = (TextView) findViewById(R.id.tv2);
        tv3 = (TextView) findViewById(R.id.tv3);
        tv4 = (TextView) findViewById(R.id.tv4);
        tv5 = (TextView) findViewById(R.id.tv5);
        tv6 = (TextView) findViewById(R.id.tv6);
        setHTML();
        setHTML2();
        setHTML3();
        setHTML4();
    }
    private void setHTML() {
        //若是仅在布局文件中引用,可以把HTML格式字符串写到strings文件中,但要注意,很多很多格式都是不支持的!
        //getString(方法)得到的是没有任何格式的字符串,所以若是在代码中设置,就不能把HTML格式字符串写到strings文件中
        tv2.setText(Html.fromHtml(getString(R.string.html_str)));
        //建议直接在代码中定义并使用。注意双引号要加转义字符
        String html = "<html>|<i>  引用  </i>|<font color=\"#aabb00\">   values/  </font>|<font color=\"RED\">  strings  </font>|<strong>  中的  </strong>|<em>  html  </em>|<strike>  格式的  </strike>|<u>  字符串  </u>|<h3>  但是  </h3>|<big>  很多  </big>|<small>  格式  </small>|<b>  都  </b>| <sub>  不  </sub>|<tt>  支持  </tt>|</html>";
        tv3.setText(Html.fromHtml(html));
        String html2 = "<a href=\"http://www.baidu.com\">代码中支持超链接</a>    <font color=\"#aabb00\">支持设置颜色</font>";
        tv4.setMovementMethod(LinkMovementMethod.getInstance());
        tv4.setText(Html.fromHtml(html2));
    }
    //显示资源图片
    private void setHTML2() {
        ImageGetter imageGetter = new ImageGetter() {
            public Drawable getDrawable(String source) {
                int rId = Integer.parseInt(source);
                Drawable drawable = getResources().getDrawable(rId);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        };
        String sText = "drawable中的图片:<img src=\"" + R.drawable.ic_launcher + "\" />";
        tv5.setText(Html.fromHtml(sText, imageGetter, null));
    }
    //显示本地图片  
    private void setHTML3() {
        ImageGetter imageGetter = new ImageGetter() {
            public Drawable getDrawable(String source) {
                Drawable drawable = Drawable.createFromPath(source);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        };
        String sText = "本地图片:<img src=\"/mnt/sdcard/temp/1.jpg\" />";
        try {
            tv6.setText(Html.fromHtml(sText, imageGetter, null));
        } catch (Exception e) {
        }
    }
    //显示网路图片
    private void setHTML4() {
        ImageGetter imgGetter = new Html.ImageGetter() {
            public Drawable getDrawable(String source) {
                Drawable drawable = null;
                URL url;
                try {
                    url = new URL(source);
                    drawable = Drawable.createFromStream(url.openStream(), "");
                } catch (Exception e) {
                    return null;
                }
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        };
        //tv7.setText(Html.fromHtml(sText1, imageGetter, null));
    }
}

布局


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/html_str"
        android:textColor="#00f" />
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#f0f" />
    <TextView
        android:id="@+id/tv3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0ff" />
    <TextView
        android:id="@+id/tv4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0f0" />
    <TextView
        android:id="@+id/tv5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00f" />
    <TextView
        android:id="@+id/tv6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#880" />
</LinearLayout>

<string name="html_str"><html>|<i>  引用  </i>|<font color="#aabb00">   values/  </font>|<font color="RED">  strings  </font>|<strong>  中的  </strong>|<em>  html  </em>|<strike>  格式的  </strike>|<u>  字符串  </u>|<h3>  但是  </h3>|<big>  很多  </big>|<small>  格式  </small>|<b>  都  </b>| <sub>  不  </sub>|<tt>  支持  </tt>|</html></string>

富文本 Htmll类 html标签的更多相关文章

  1. android html 图片处理类--加载富文本工具类

    在android开发中,一些资讯类页面,里面有html标签和图片,html 标签一般通过Html.fromHtml方法,即可以解决,但是如果html 有图片标签,那么,Html.fromHtml 好像 ...

  2. 去除富文本中的html标签及vue、react、微信小程序中的过滤器

    在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容:然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过 1.富文本去除html标签 去除htm ...

  3. Android检测富文本中的<img标签并实现点击效果

    本文旨在:通过点击一张图片Toast输出位置与url链接. 闲话少说,实现原理大概是酱紫的::通过正则表达式检测富文本内的图片集合并获取url,在src=“xxx” 后面添加 onclick方法,至于 ...

  4. 在循环列表的富文本里摘出每个item的img标签内容(适合vue渲染)

    昨天在做公司项目的社区动态内容.后台接口返回的数据是数组套对象,对象里有富文本,然后需要摘出富文本里的img标签在列表里分开渲染(即图片九宫格样式).最终效果如图: 这个是后盾接口返回的json数据 ...

  5. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  6. 从html富文本中提取纯文本

    其实从html富文本中提取纯文本很简单,富文本基本上是使用html标签给文本加上丰富多彩的样式. 所以只需要将富文本字符串中的“<.....>”标签剔除,即可得到纯文本.我们可以使用正则表 ...

  7. 原生JS实现简单富文本编辑器2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 原生JS实现简单富文本编辑器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. springmvc 后台实体类接受前端json字符串时,其中一个属性content 接受富文本内容时 标签<p>、<span> 这些标签丢失问题解决

    问题描述: 前端一个字段 <script id="editor" type="text/plain" name="content" s ...

随机推荐

  1. 【NOI2006】最大获利

    [问题描述] 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就 ...

  2. Cisco CatOS系统交换机的SPAN配置

    以下内容摘自最新上市的“四大金刚”图书之一<Cisco交换机配置与管理完全手册>(第二版)(其它三本分别为<Cisco路由器配置与管理完全手册>(第二版).<H3C交换机 ...

  3. STL容器介绍

    STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string. 二 : 关联容器,     有set, multiset, map, mulmap, h ...

  4. jquery 实现文本框scroll上下动

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. iOS开发——C篇&数组与指针

    2015-07-17 13:23 编辑 前面我们介绍了关于C语言的内存分配问题,下面我们就开始介绍关于C语言的两个非常重要的知识点:数组与指针 数组与指针其实不仅仅是再C语言中,再OC中(当然OC是内 ...

  6. C# 代码 设置 前台 页面 JS提示

    方法1: Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert ...

  7. iOS 写入文件保存数据的方式

     在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeye ...

  8. 一分钟让你明白CSS中的盒模型

    想必初学者对CSS盒模型总是很困惑吧.下面一分钟让你彻底明白盒模型: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" &q ...

  9. LINUX搭建SVN客户端和多个项目的权限分组管理

    搭建SVN服务,有效的管理代码,以下三步可以快速搞定.1.安装 #yum install subversion 判断是否安装成功 1 #subversion -v svnserve, version ...

  10. IDE 常用快捷键记录

    一:Eclipse (1)删除当前行:Ctrl+D (2)最大化当前编辑窗口:Ctrl+m (3)关闭当前编辑器窗口:Ctrl+F4/Ctrl+w (4)导入依赖包:Ctrl+Shift+o 二:Ne ...