Android TextView显示Html类解析的网页和图片及自定义标签用法示例
作者:与时俱进 发布时间:2023-06-12 04:39:41
标签:Android,TextView
本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:
Android系统显示HTML网页的最佳控件为WebView,有时候为了满足特定需求,需要在TextView中显示HTML网页、图片及解析自定义标签。
1、TextView显示Html类解析的网页
CharSequence richText = Html.fromHtml("<strong>萝卜白菜的博客</strong>--<a href='http://orgcent.com'>http://orgcent.com</a>");
mTVText.setText(richText);
//此行必须,否则超链接无法点击,ScrollingMovementMethod实现滚动条
mTVText.setMovementMethod(LinkMovementMethod.getInstance());
PS: 如果想同时让内容可滚动和超链接可点击,只要设置LinkMovementMethod即可。因为其继承了ScrollingMovementMethod。关于ScrollingMovementMethod说明,可查看android实现TextView垂直或水平滚动
2、TextView显示Html解析的图片和自定义标签
final String html = "萝卜白菜的博客<img src='http://m3.img.libdd.com/farm3/115/BBE681F0CAFB16C6806E6AEC1E82D673_64_64.jpg'/><mytag color='blue'>自定义</mytag>";
//处理未知标签,通常是系统默认不能处理的标签
final Html.TagHandler tagHandler = new Html.TagHandler() {
int contentIndex = 0;
/**
* opening : 是否为开始标签
* tag: 标签名称
* output:输出信息,用来保存处理后的信息
* xmlReader: 读取当前标签的信息,如属性等
*/
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if("mytag".equals(tag)) {
if(opening) {//获取当前标签的内容开始位置
contentIndex = output.length();
try {
final String color = (String) xmlReader.getProperty("color");
} catch (Exception e) {
e.printStackTrace();
}
} else {
final int length = output.length();
String content = output.subSequence(contentIndex, length).toString();
SpannableString spanStr = new SpannableString(content);
spanStr.setSpan(new ForegroundColorSpan(Color.GREEN), 0, content.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
output.replace(contentIndex, length, spanStr);
}
}
System.out.println("opening:" + opening + ",tag:" + tag + ",output:" + output);
}};
//解析图片
final Html.ImageGetter imageGetter = new Html.ImageGetter() {
public Drawable getDrawable(String source) {
//在此必须异步加载图片
Drawable d = null;
try {
InputStream is = new DefaultHttpClient().execute(new HttpGet(source)).getEntity().getContent();
Bitmap bm = BitmapFactory.decodeStream(is);
d = new BitmapDrawable(bm);
//setBounds(0, 0, bm.getWidth(), bm.getHeight());
d.setBounds(0, 0, 200, 300);
} catch (Exception e) {e.printStackTrace();}
return d;
}
};
richText = Html.fromHtml(html, imageGetter, tagHandler);
mTVText.setText(richText);
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- .NET 中的正则表达式是基于 Perl 5 的正则表达式。超时从 .NET Framework 4.5 开始,正则表达式支持在匹配操作中指
- Android 捕获运行时异常详解Android 异常分为两类:CheckedException 和 UnCheckedExceptionC
- 本文实例讲述了Android中Matrix用法。分享给大家供大家参考,具体如下:Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方
- 这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码所需的maven依赖<dependency>
- 零、业务逻辑Controller-->service接口-->serviceImpl-->dao接口-->daoIm
- 本文实例总结了C#常见应用函数。分享给大家供大家参考,具体如下:1、页面写CS代码(代码内嵌)<%@ Import Namespace
- 1、将 Jmeter 下 extras 目录中 ant-jmeter-1.1.1.jar 包拷贝至 ant 安装目录下的lib目录中,否则会
- 工作中因业务需求,将数据库中的树状结构的数据根据父节点获取所有的子节点实现思路1.获取整个数据的list集合数据2.将数据分组,java8
- 1 问题手写一个程序,完成List集合对象的逆序遍历2 方法创建List接口的多态对象向创建好list集合添加元素使用hasPrevious
- spring Boot的学习持续进行中。前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目以及怎样为我们的Project
- 相信大家对SaaS架构都有所了解,这里也不过多介绍,让我们直奔主题。技术框架springboot版本为2.3.4.RELEASE持久层采用J
- 本文实例讲述了Android精灵动画用法。分享给大家供大家参考。具体如下:ElaineAnimated.java文件如下:package n
- 本文为大家分享两个实例,相信大家一定会喜欢。实例1:随机生成验证码图片并将之输出为一个png文件效果图:import java.awt.Co
- 本文以实例形式讲述了C#应用BindingSource实现数据同步的方法,对C#数据库程序开发来说具有一定的参考借鉴价值。具体实现方法如下:
- 前言本文章主要从spring security安全认证登录内部调用流程来流程分析登录过程。一、登录时序图时序原图二、配置与代码1.引入库po
- 由于 * 一般都比较难理解,程序设计者会设计一个 * 接口供开发者使用,开发者只要知道 * 接口的方法、含义和作用即可,无须知道 * 是
- 一、思路1.定义一个toFind变量来传入要查找的元素2.遍历整个顺序表并判定当前下标的元素等不等于toFind3.如果等于就返回一个tru
- WPF实现 Gitee泡泡菜单框架使用大于等于.NET40;Visual Studio 2022;项目使用 MIT 开源
- 本文将讲解如何通过codecogs.com和Google.com提供的API接口来将LaTeX数学函数表达式转化为图片形式。具体思路如下:&
- 1. JSCH简介JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可