Android ClickableSpan get text onClick()

后端 未结 4 1874
陌清茗
陌清茗 2020-12-05 14:46

I\'m working on ClickableSpan in a TextView, and I\'m trying to get the clicked span\'s text. This is my code.

// this is the text we\'ll be ope         


        
4条回答
  •  醉话见心
    2020-12-05 15:14

    You can also use to make string spannable like this

    String htmlLinkText = "Lorem ipsum dolor sit amet";
        testView.setText(Html.fromHtml(htmlLinkText));
        testView.setMovementMethod(LinkMovementMethod.getInstance());
    
        CharSequence text = testView.getText();
        if (text instanceof Spannable) {
            int end = text.length();
            Spannable sp = (Spannable) testView.getText();
            URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
            SpannableStringBuilder style = new SpannableStringBuilder(text);
            style.clearSpans();//should clear old spans
            for (URLSpan url : urls) {
                CustomerTextClick click = new CustomerTextClick(url.getURL());
                style.setSpan(click, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
            testView.setText(style);
        }
    

    and CustomerTextClick will be

    private static class CustomerTextClick extends ClickableSpan {

        private String mUrl;
    
        CustomerTextClick(String url) {
            mUrl = url;
        }
    
        @Override
        public void onClick(View widget) {
            // TODO Auto-generated method stub
            //Toast.makeText(ctx, "hello google!",Toast.LENGTH_LONG).show();
            // Do your action here
        }
    }
    

    Tested and working code.

提交回复
热议问题