Android TextView Html超鏈接實現(xiàn)自定義點(diǎn)擊事件處理

第一步:自定義ClickableSpan


   private static class MyURLSpan extends ClickableSpan {
        private String mUrl;

        MyURLSpan(String url) {
            mUrl = url;
        }

        @Override
        public void onClick(View widget) {
            XLog.d(mUrl);
        }
    }

第二步:處理html

        String text = "請點(diǎn)擊<a href=\"http://www.baidu.com\"> 百度 </a>查看詳情";
        Spanned spanned = Html.fromHtml(text);
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(spanned);
        URLSpan[] urls = spannableStringBuilder.getSpans(0, spanned.length(), URLSpan.class);
        for (URLSpan url : urls) {
            MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
            int start = spannableStringBuilder.getSpanStart(url);
            int end = spannableStringBuilder.getSpanEnd(url);
            int flags = spannableStringBuilder.getSpanFlags(url);
            spannableStringBuilder.setSpan(myURLSpan, start, end, flags);
            //一定要加上這一句,看過很多網(wǎng)上的方法,都沒加這一句,導(dǎo)致ClickableSpan的onClick方法沒有回調(diào),直接用瀏覽器打開了
            spannableStringBuilder.removeSpan(url);
        }

第三步:設(shè)置給textView

        textView.setText(spannableStringBuilder);
        //這一句加上以后才能處理點(diǎn)擊
        textView.setMovementMethod(LinkMovementMethod.getInstance());

至此就能首先自定義點(diǎn)擊了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容