textview 设置SpannableStringBuilder实现点击事件

来源:互联网 发布:淘宝上都是国产植鞣革 编辑:程序博客网 时间:2024/06/02 00:01

实现目标:用TextView加载HTML代码 实现自定义点击URL事件
钱先生不哔哔 直接上代码

   msg_context = (TextView) this.findViewById(R.id.msg_context);   msg_context.setText(getClickableHtml(response.getResponseObject().getData().getMsgContent()));   msg_context.setMovementMethod(LinkMovementMethod.getInstance()); //响应Span点击事件    private CharSequence getClickableHtml(String html) {        Spanned spannedHtml = Html.fromHtml(html);        SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);        URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);        for ( URLSpan span : urls) {            Log.e("WebView_SpanUrl",span.getURL());            setLinkClickable(clickableHtmlBuilder, span);        }        return clickableHtmlBuilder;    }    private void setLinkClickable( SpannableStringBuilder clickableHtmlBuilder,  URLSpan urlSpan) {        int start = clickableHtmlBuilder.getSpanStart(urlSpan);        int end = clickableHtmlBuilder.getSpanEnd(urlSpan);        int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);        String newUrl= urlSpan.getURL();        clickableHtmlBuilder.setSpan(new ClickableSpan() {// 可以实现各种效果(点击事件 颜色等)            public void onClick(View view) {      //在这里添加点击事件                Log.e("WebView", "响应点击事件"+newUrl);                if ( newUrl.startsWith("tel:")) {                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newUrl));                    startActivity(intent);                } else if (newUrl.startsWith("http:") || newUrl.startsWith("https:")) {                    Intent intent = new Intent(MessageDetailAty.this, WebViewAty.class);                    if (newUrl.contains("skip_product.htm")) {                        intent.putExtra("title", "产品详情");                    } else {                        intent.putExtra("title", getResources().getString(R.string.app_name));                    }                    intent.putExtra("url", newUrl);                    startActivity(intent);                }            }        }, start, end, flags);        Log.e("WebView", "点击的url:" + newUrl+"=="+start+"=="+end);    }
阅读全文
0 0
原创粉丝点击