TextView 中拦截点击事件

原创 2016年08月28日 19:31:00

TextView 中的链接点击后,会自动跳转到浏览器显示。如果需要自己拦截这个事件,可以通过下面的方法实现:


  CharSequence charSequence = Html.fromHtml(text);/////text是要显示的html文字
        final SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);///这个builder本身就实现了spannle
        URLSpan[] urlSpans = builder.getSpans(0, charSequence.length(), URLSpan.class);
        for(URLSpan span : urlSpans){
            final int start = builder.getSpanStart(span);
            final int end = builder.getSpanEnd(span);
            int flag = builder.getSpanFlags(span);
            final String link = span.getURL();
            L.i("tostring:"+span.toString());
            builder.setSpan(new ClickableSpan() {

                @Override
                public void onClick(View widget) {
                    //捕获<a>标签点击事件,及对应超链接link
                    L.i("link--title" + link+builder.subSequence(start,end));
			//dosomething  link 就是链接地址 ;builder.subSequence(start,end).toString());可以获得显示显示的文字
                    Intent intent = new Intent(CommQuesActivity.this,WebActivity.class);
                    intent.putExtra("url",link);
                    intent.putExtra("title",builder.subSequence(start,end).toString());
                    startActivity(intent);
                }

                @Override
                public void updateDrawState(TextPaint ds) {
                    ds.setColor(ds.linkColor); //设置链接的文本颜色
                    ds.setUnderlineText(false); //去掉下划线
                }


            }, start, end, flag);
            builder.removeSpan(span);
        }

        textView.setLinksClickable(true);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setText(builder);


SpannableStringBuilder  implements CharSequence, GetChars, Spannable, Editable,
        Appendable, GraphicsOperations,所以最后直接将builder 显示到textview中即可。

思路就是将URLSpan 替换为自己实现的ClickableSpan,URLSpan本身就是 extends ClickableSpan。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

TextView部分文字点击事件

  • 2015-12-07 17:37
  • 2.29MB
  • 下载

TextView中的文本加效果,如设置不同颜色,大小或点击事件

方法一 利用HTML语言,改变文字颜色 例1: String str = "中软" + "国际"; TextView tv = new TextView(this); tv.set...

让TextView展示不同颜色字体,让局部字体拥有点击事件

发现很多时候展示一堆文字,需要让局部的某些字变粗啊,变大、变颜色、能点击等等要求,今天在这简单总结下方便日后直接复用(用html写的也很简单,在这就不写了),在这里我用 SpannableString...

TextView加载HTML数据(网络图片以及图片点击事件的实现)

TextView加载HTML数据网络图片以及图片点击事件的实现

textview设置多种不同的字体颜色和点击事件

最近项目需要用到textview为特定字符设置不同的颜色,如果用不同的控件拼起来的话一行也许没有问题,但是如果换行的话效果就不理想了就像qq空间回复品论的效果,昵称和内容文字颜色不一样,点击事件也不一...

Android同一个TextView里响应多个区域点击事件

有时会遇到在一个TextView里处理特定字符串的点击事件,而且这些字符串位置不固定,这里就是通过正则筛选然后单独对字符串处理点击事件.

关于textview中表示文字段落时,特定区域显示高亮颜色和点击事件的方法

感谢原作者,转自:http://blog.csdn.net/lanxingfeifei/article/details/50523555范例如下:import java.io.IOException;...

自定义的TextView,使部分内容拥有点击事件,并在点击内容上方出现对应的词义等信息

直接看效果图: 上面图中是一个TextView,注册部分内容(KeyWord)是其拥有点击事件,并通过计算KeyWord的坐标,显示KeyWord的想要的一些信息 /** * 一个Tex...

android 为TextView的部分文字设置超链接样式并监听点击事件

android 为TextView的部分文字设置超链接样式并监听点击事件
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)