Html类TagHandler接口
来源:互联网 发布:网络维护要什么证件 编辑:程序博客网 时间:2024/05/20 13:07
- mTvA = (TextView) this.findViewById(R.id.tv_html_label_a);
- // 超链接标签
- String htmlA = "<a href='http://blog.csdn.net/u010418593'>超链接测试</href>";
- // 设置文本数据
- mTvA.setText(Html.fromHtml(htmlA));
- // 该方法在需要响应用户事件时使用
- mTvA.setMovementMethod(LinkMovementMethod.getInstance());
- mTvFont = (TextView) this.findViewById(R.id.tv_html_label_font);
- // font标签
- String htmlFont = "<font size='20' color='red' = face='verdana'>font标签测试</font>";
- mTvFont.setText(Html.fromHtml(htmlFont));
上面代码中的为mTvA设置了超链接文本,如果想在点击后进入相应的链接地址则需要通过mTvA设置setMovementMethod(LinkMovementMethod.getInstance());而mTvFont则设置了font标签,并为标签设置了size、color、face属性,效果如下图:
上图中的"超链接测试"文本是链接的形式显示的,而在下方则是font标签的测试,发现我们为其设置的size为20并没有效果,这是因为并不支持该属性;接下来我们便定义一个<size>标签,具体代码如下:
自定义size标签
- /**
- * size标签
- * @author Susie
- */
- public class SizeLabel implements TagHandler {
- private int size;
- public SizeLabel(int size) {
- this.size = size;
- }
- @Override
- public void handleTag(boolean opening, String tag, Editable output,
- XMLReader xmlReader) {
- /**
- * 参数:
- * opening:为true时表示开始解析,为false时表示解析完
- * tag:当前解析的标签
- * output:文本中的内容
- * xmlReader:xml解析器
- */
- // 判断当前解析的tag是否为size,并且已经解析完毕(在没有解析完毕之前output中没有数据)
- if(tag.toLowerCase().equals("size") && !opening) {
- // 通过output调用setSpan方法,改变文本的0下标到最后的下标的大小;
- // 最后的参数用来标识在span范围内的文本前后输入新的字符时是否也改变它们的效果;
- output.setSpan(new AbsoluteSizeSpan(size), 0, output.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- }
- }
- }
Activity类
- /**
- * 自定义html标签
- * @author Susie
- */
- public class SizeLabelActivity extends Activity {
- private TextView mTvSizeLabel;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_size_label);
- mTvSizeLabel = (TextView) this.findViewById(R.id.tv_custom_label_view);
- String html = "<font color='red' face='verdana'><size>自定义Html标签</size></font>";
- // 为其设置文本,参数:文本、<img>标签的回调、自定义标签会滴;
- mTvSizeLabel.setText(Html.fromHtml(html, null, new SizeLabel(20)));
- }
- }
我们通过实现TagHandler接口并在handleTag方法中对自定义的标签做相应的处理即可,Html.fromHtml(source,imageGetter,tagHandler)方法中的参数即为要解析的HTML文本,<img>标签的回调我们传递null即可,而tagHandler传递的则是我们自定义的标签;其中setSpan方法中的flag参数有如下:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE前后都不包括;
Spanned.SPAN_INCLUSIVE_EXCLUSIVE包括前面,不包括后面;
Spanned.SPAN_EXCLUSIVE_INCLUSIVE不包括签名,包括后面;
Spanned.SPAN_INCLUSIVE_INCLUSIVE前后都包括;
这些参数的意思是当我们改变的文本的显示效果后(如粗体、斜体、下划线等),在为其通过append()方法添加了新的字符时是否需要改变它们的效果;
- Html类TagHandler接口
- Html类TagHandler接口
- Html.fromHtml()中Html.TagHandler()的使用
- Html.fromHtml()中Html.TagHandler()的使用
- Android中的android.text.Html类学习(补全了TagHandler部分)
- Html类ImageGetter接口
- Html类ImageGetter接口
- Html调用 QQ接口
- HTML 历史项接口
- Html调用 QQ接口
- java.lang.NoClassDefFoundError: com/sun/facelets/tag/TagHandler
- Html文件解析操作接口
- 接口返回的主动html
- 抽象类与接口的区别--http://blog.sina.com.cn/s/blog_5e9f4ac60100ddfq.html
- java中抽象类和接口的区别--http://zhidao.baidu.com/question/16706168.html
- 接口与抽象类的区别 原文地址:http://blog.vsharing.com/jekkon/A1604115.html
- html中的打印接口的妙用
- 用CHtmlView接口获取HTML源文件
- 常用正则表达式收藏
- 常用小技巧-测试
- 喷水装置一
- IOS--UIToolBar详细使用
- 波兰表达式和逆波兰表达式
- Html类TagHandler接口
- 运算符的理解
- iOS--如何把你自己的应用程序的设置集合到系统的设置页面中
- UISlider/UISegmentedControl/UISetpper/UISwitch/UIProgressView/UIPageControl
- 为何安卓要3GB RAM,iPhone只用1GB就够了?
- applet签名
- jQuery使用整理
- [poj2349 Arctic Network]最小生成树
- 创建proc文件