TextView 不支持所有的html标签,只有部分支持,复杂的需要webView来做
支持的标签有:
<a href="..."> 定义链接内容
<b>
定义粗体文字 b 是blod的缩写<big>
定义大字体的文字<blockquote>
引用块标签
<br>
定义换行<cite>
表示引用的URI<dfn>
定义标签 dfn 是defining instance的缩写<div align="...">
<em>
强调标签 em 是emphasis的缩写<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
定义斜体文字<img src="...">
<p>
段落标签,里面可以加入文字,列表,表格等<small>
定义小字体的文字<strike>
定义删除线样式的文字 不符合标准网页设计的理念,不赞成使用. strike是strikethrough的缩写<strong>
重点强调标签<sub>
下标标签 sub 是subscript的缩写<sup>
上标标签 sup 是superscript的缩写<tt>
定义monospaced字体的文字 不赞成使用. 此标签对中文没意义 tt是teletype or monospaced text style的意思<u>
定义带有下划线的文字 u是underlined text style的意思 ImageGetter imgGetter = new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { Drawable d=null; try { URL aryURI = new URL(source); /* 打开连接 */ URLConnection conn = aryURI.openConnection(); conn.connect(); /* 转变为 InputStream */ InputStream is = conn.getInputStream(); /* 将InputStream转变为Bitmap */ //Bitmap bm = BitmapFactory.decodeStream(is); /* 关闭InputStream */ /*添加图片*/ d=Drawable.createFromStream(is, "111"); is.close(); } catch (IOException e) { e.printStackTrace(); } d.setBounds(1, 1, 45, 45); return d; }
public class MyHtmlTagHandler implements TagHandler { public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) { if(tag.equalsIgnoreCase("strike") || tag.equals("s")) { processStrike(opening, output); } } private void processStrike(boolean opening, Editable output) { int len = output.length(); if(opening) { output.setSpan(new StrikethroughSpan(), len, len, Spannable.SPAN_MARK_MARK); } else { Object obj = getLast(output, StrikethroughSpan.class); int where = output.getSpanStart(obj); output.removeSpan(obj); if (where != len) { output.setSpan(new StrikethroughSpan(), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } } private Object getLast(Editable text, Class kind) { Object[] objs = text.getSpans(0, text.length(), kind); if (objs.length == 0) { return null; } else { for(int i = objs.length;i>0;i--) { if(text.getSpanFlags(objs[i-1]) == Spannable.SPAN_MARK_MARK) { return objs[i-1]; } } return null; } } }