捕获TextView超链接
16lz
2021-01-26
Android的TextView是个很强大的控件,通过Html类处理html文本后可以支持部分html标签。有时候需要捕获TextView中标签的点击事件进行自己的超链接点击处理,下面的代码用于捕获TextView中标签点击后的响应事件:
CharSequence charSequence = Html.fromHtml(strHtml); SpannableStringBuilder builder = new SpannableStringBuilder(charSequence); URLSpan[] urlSpans = builder.getSpans(0, charSequence.length(), URLSpan.class); for(URLSpan span : urlSpans){ int start = builder.getSpanStart(span); int end = builder.getSpanEnd(span); int flag = builder.getSpanFlags(span); final String link = span.getURL(); builder.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { //捕获标签点击事件,及对应超链接link } }, start, end, flag); builder.removeSpan(span); } textView.setLinksClickable(true); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setText(charSequence);
总结为三个步骤:
- 使用Html.fromHtml(String strHtml)转换html标签字符串,fromHtml()方法中会对html标签进行替换,并html标签封装成对应的格式对象。其中每一个标签都会对应一个URLSpan对象。
- 获取文本中所有的URLSpan对象,取出URLSpan对象的对应的位置、标识、以及对应的url地址后,使用ClickableSpan对象进行替换,并做自己的超链接逻辑处理。
- Textview设置链接可点击,以及点击响应处理属性。
更多相关文章
- Android(安卓)Studio报:“Attribute application@theme or @ icon
- SearchView使用
- Android中使用OnClickListener接口实现按钮点击的低级失误
- 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优
- Android(安卓)不得不知 之 Parcelable
- android NDK 入门之在JNI中修改java中对象的成员变量的值
- android调用手机摄像头拍照
- Android中传递对象的三种方法
- 想在Android上用一下PureMVC,谁知结果……