android 自定义TextView中Html超链接点击事件详解
2016-01-05 10:52
585 查看
public class TextHtmlActivity extends Activity { private TextView text; private Activity mActivty; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.text_html_layout); mActivty = this; text = (TextView) findViewById(R.id.text); text.setText(Html.fromHtml("<b>text3:</b> " + "Text with a " + "<a href=\"http://www.baidu.com\">link</a> " + "点击这个连接---"+ "<a href=\"http://www.dewen.io/q/1744\">连接</a> "+ "created in the Java source code using HTML.")); text.setMovementMethod(LinkMovementMethod.getInstance()); CharSequence str = text.getText(); if(str instanceof Spannable){ int end = str.length(); Spannable sp = (Spannable)text.getText(); //构建Spannable对象、继承Spanned、Spanned对象继承CharSequener URLSpan[] urls=sp.getSpans(0, end, URLSpan.class); //找出text中的a标签 //SpannableStringBuilder、SpannableString对象跟String对象差不多、只是比String对象多setSpan, //可以给字符串设置样式、大小、背景色...而 SpannableStringBuilder跟SpannableString的关系就跟String跟StringBuffer关系一样 SpannableStringBuilder style=new SpannableStringBuilder(str); style.clearSpans();//should clear old spans for(URLSpan url : urls){ MyClickSpan myURLSpan = new MyClickSpan(); //设置样式其中参数what是具体样式的实现对象,start则是该样式开始的位置,end对应的是样式结束的位置, // 参数 flags,定义在Spannable中的常量 style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } text.setText(style); } } private class MyClickSpan extends ClickableSpan{ @Override public void updateDrawState(TextPaint ds) { ds.setUnderlineText(false); super.updateDrawState(ds); } @Override public void onClick(View widget) { Toast.makeText(mActivty,"click link",Toast.LENGTH_SHORT).show(); } } }
相关文章推荐
- Android编程中的消息机制实例详解
- android 获取当前程序路径
- android 遇到过的bug(累积文)
- Android sdk下载链接
- Android 环信录音弹出"权限管理"问题
- 查看当前android设备已安装的第三方包
- 查看当前android设备已安装的第三方包
- Android实现滑动刻度尺效果,选择身高体重和生日
- 怎么挂载android system.img
- Android Animation动画
- Android studio gradle配置
- android中Log打印日志相关信息
- android开发 java.lang.NoClassDefFoundError 解决办法之一
- Android:网页设计界面
- Android:编码设计界面
- Android开发总结笔记 ViewGroup的事件分发机制 3-10
- Android驱动编译mmm命令的小tip
- Android中selector背景选择器
- Android Studio之导入外部so库
- Android View之组合控件实例(一)