Make a hyperlink textview in android

后端 未结 6 1916
太阳男子
太阳男子 2020-11-28 07:34

I want to make a link for a textview text like Google. Is there anyway to make link like this. (i.e) When clicking on the word Google it should open the appropriate link. An

相关标签:
6条回答
  • 2020-11-28 07:43

    Try this, and let me know what happen..

    Using java code:

    TextView textView =(TextView)findViewById(R.id.textView);
    textView.setClickable(true);
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    String text = "<a href='http://www.google.com'> Google </a>";
    textView.setText(Html.fromHtml(text));
    

    From API level >= 24 onwards Html.fromHtml(String source) is deprecated instead use fromHtml(String, int),

    textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
    

    Or in layout xml file, inside your TextView widget attributes

    android:autoLink="web"
    android:linksClickable="true"
    
    0 讨论(0)
  • 2020-11-28 07:43

    This can also be done by using the default property of Textview

    android:autoLink="email"
    
    0 讨论(0)
  • 2020-11-28 07:51

    For Latest version of SDK fromHtml is deprecated Use below line

    String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
        if (Build.VERSION.SDK_INT >= 24) {
            textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
        } else {
            textView.setText(Html.fromHtml(yourtext));
        }
    
    0 讨论(0)
  • 2020-11-28 07:52

    All tested and working 100%
    Solution: android:autoLink="web"
    below is a complete example

    Sample Layout Xml

        <TextView
            android:id="@+id/txtLostpassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:autoLink="email"
            android:gravity="center"
            android:padding="20px"
            android:text="@string/lostpassword"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    
        <TextView
            android:id="@+id/txtLostpassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:autoLink="web"
            android:gravity="center"
            android:padding="20px"
            android:text="@string/defaultpassword"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    

    String in string.xml

    <string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>
    
    <string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>
    
    0 讨论(0)
  • 2020-11-28 07:59

    Note :- Html.fromHtml is deprecated in Android N

    You need to do check and support Android N and higher versions of Android

                      //Set clickable true
                     tagHeading.setClickable(true);
                     
                      //Handlle click event
                      tagHeading.setMovementMethod(LinkMovementMethod.getInstance());
    
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                        tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
                    } else {
                        tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
                    }
     
    

    Alternatively

    You can don't want to id programmatically add autoLink flag on TextView.

    android:autoLink="web"

    android:linksClickable="true"

    This way You don't need to add <a href='somelink'> tags.

    Which is a disadvantage, if you want to add hyperlink on a text you can't do it this way. eg you can't do something like this:- [hiteshsahu][1]

               <TextView
                    android:id="@+id/tag_info"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/tag_ll"
                    android:layout_gravity="left"
                    android:layout_margin="10dp"
                    android:autoLink="web"
                    android:linksClickable="true"
                    android:text="https://github.com/hiteshsahu"
                    android:textColor="@color/secondary_text" />
    

    The result from both approach:-

    https://github.com/hiteshsahu

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

    use android:autoLink="web" in your TextView's xml. It should automatically convert urls click-able (if found in text)

    0 讨论(0)
提交回复
热议问题