Android Linkify text - Spannable Text in Single Text View - As like Twitter tweet

后端 未结 4 2101
小蘑菇
小蘑菇 2020-11-28 10:53

I have a textView and text like

\"This is the Simple Text with KeyWord and the Link to browse\"

in the above text i want to

4条回答
  •  渐次进展
    2020-11-28 11:27

    What you can do is create a Custom ClickableSpan as below,

    class MyCustomSpannable extends ClickableSpan
    {
        String Url;
        public MyCustomSpannable(String Url) {
            this.Url = Url;
        }
        @Override
        public void updateDrawState(TextPaint ds) {
                // Customize your Text Look if required
            ds.setColor(Color.YELLOW);
            ds.setFakeBoldText(true);
            ds.setStrikeThruText(true);
            ds.setTypeface(Typeface.SERIF);
            ds.setUnderlineText(true);
            ds.setShadowLayer(10, 1, 1, Color.WHITE);
            ds.setTextSize(15);
        }
        @Override
        public void onClick(View widget) {
        }
        public String getUrl() {
            return Url;
        }
    }
    

    And the use its onClick() for opening an Activity or URL. I am adding a demo for loading a URL in WebView.

    String text = "http://www.google.co.in/";
    SpannableStringBuilder stringBuilder = new SpannableStringBuilder(text);
    MyCustomSpannable customSpannable = new MyCustomSpannable(
                                                   "http://www.google.co.in/"){
    
                @Override
                public void onClick(View widget) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(customSpannable.getUrl()));
                    startActivity(intent);
                }
            };
            stringBuilder.setSpan(customSpannable, 0, text.length(),
                                             Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    
            textView.setText( stringBuilder, BufferType.SPANNABLE );
            textView.setMovementMethod(LinkMovementMethod.getInstance());
    

提交回复
热议问题