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 点击事件无效的完美解决

最近在开发中遇到这么一个问题,当使用TextView做成Button的点击事件时(在xml中使用android:onClick="click"属性设置该TextView的点击方法),点击失去效果,不能...

TextView部分文字点击事件

  • 2015年12月07日 17:37
  • 2.29MB
  • 下载

给TextView的drawableRight属性设置点击事件

由于需求,要给TextView的drawableRight图片设置点击事件 其实更多的可能是EditText,像登录框那样的,其实都一样 上代码/** * Created by great小...

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

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

Android TextView中链接(link)点击事件的截取

TextView 2 android:layout_width="match_parent" 3 android:layout_heig...

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

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

Android中为TextView中的部分文字设置颜色和点击事件

text_click = getString(R.string.choose_monitor_text_click); text_phone_content = getString(R.strin...
  • vite_s
  • vite_s
  • 2015年08月17日 10:04
  • 725

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

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

(转)监听TextView中链接文本的点击事件

原地址:http://blog.csdn.net/ygc87/article/details/8216946 最近有一个需求,在一个Dialog中显示一个带有链接的文本,点击这个链接文本跳转...
  • duyiqun
  • duyiqun
  • 2017年04月05日 09:35
  • 122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TextView 中拦截点击事件
举报原因:
原因补充:

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