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

后端 未结 4 2085
小蘑菇
小蘑菇 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:05

    Generate your TextView in the following manner:

    TextView t3 = (TextView) findViewById(R.id.text3);
    t3.setText(Html.fromHtml("This is the Simple Text with 
        <a href=\'http://www.google.com\'>Keyword</a> and the 
        <a href='startActivityFromLink://some_info'>Link</a> to browse"));
    t3.setMovementMethod(LinkMovementMethod.getInstance());
    

    Specify your activity the following way:

    <activity android:name=".TestActivity"
          android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <data android:scheme="startActivityFromLink" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    

    I think it should work. Might require some tweaking. I did not get the time to test it. Let me know if it works.

    0 讨论(0)
  • 2020-11-28 11:08

    Make Keyword and The link into different TextViews.

    Then set the TextView.onClickListener() after you do this.

    This is the easiest way, and more logic way.

    0 讨论(0)
  • 2020-11-28 11:13

    I have used the same thing which I answered here in This Question

    For that I have used this LinkEnabledTextView and that become easy for me to do the task.

    0 讨论(0)
  • 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());
    
    0 讨论(0)
提交回复
热议问题