2012-02-15 58 views
57

我想打一個鏈接,像Google一個TextView文本超鏈接的TextView。反正有這樣的鏈接。 (即)當點擊Google這個詞時,它應該打開適當的鏈接。任何想法都歡迎。讓android系統

+0

重複:http://stackoverflow.com/questions/2116162/how-to-display-html -in-textview – m0skit0 2012-02-15 09:21:16

+0

http:// stackoverflow。com/questions/3204036/hyperlink-in-android – 2012-02-15 09:23:58

+0

只需使用Linkify.addLinks(TextView,Linkify.ALL); – Nepster 2014-07-14 06:26:34

回答

96

試試這個,讓我知道發生什麼事..

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)); 
+0

我得到了預期的輸出。感謝您的回答 – Srinivas 2012-02-15 09:43:55

+2

它也可以通過使用android:autoLink =「email」 – 2014-05-23 13:21:06

42

使用android:autoLink="web"在你的TextView的XML。它應該會自動轉換網址,點擊能(如果在文本中找到)

+13

還包括android:linksClickable =「true」 – 2013-08-20 11:59:02

+0

@waqaslam在這種情況下,我們把一個鏈接。 – 2016-05-05 13:40:35

+1

@ Garg's這是您在textview上設置的文本,可能包含超鏈接 – waqaslam 2016-05-05 17:53:23

25

所有測試和
解決方案的工作100%:低於android:autoLink="web"
是一個完整的例子

樣品佈局的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.xml字符串

<string name="lostpassword">If you lost your password please contact <a href="mailto:[email protected]?Subject=Lost%20Password" target="_top">[email protected]</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> 
+3

它不起作用,如果我更改此行> http://www.cleverfinger.com.au/user-guide/一個不同的文字,如:點擊這裏 – Daniel 2014-04-15 16:57:44

+0

不適合我。 – 2015-07-27 09:50:54

+2

只有當文本包含完整的網址時纔有效:www.something.com – 2015-08-12 12:57:52

5

這也通過使用默認屬性的TextView

android:autoLink="email" 
2

注: - Html.fromHtml採用的是Androidñ棄用

你需要做的檢查和支持Android N和更高VERS 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>")); 
       } 

離子或者

你可以不想ID編程上的TextView添加自動鏈接標誌。

機器人:自動鏈接= 「網絡」

機器人:linksClickable = 「真」

這樣,你並不需要添加<a href='somelink'>標籤。

這是一個缺點,如果你想在text上添加hyperlink你不能這樣做。從兩個途徑[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" /> 

結果: - - :例如,你不能做這樣的事情

https://github.com/hiteshsahu

1

對於SDK fromHtml的最新版本已經過時 使用下面一行

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)); 
    }