2013-07-27 84 views
1

我花了一個多小時查看大量示例,但實際上它們都不適用於在TextView中設置文本以鏈接到Web URL。如何在TextView中鏈接文本以打開網址

示例代碼!

text8 = (TextView) findViewById(R.id.textView4); 
text8.setMovementMethod(LinkMovementMethod.getInstance()); 

的strings.xml

<string name="urltext"><a href="http://www.google.com">Google</a></string> 

main.xml中

<TextView 
     android:id="@+id/textView4" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:autoLink="web" 
     android:linksClickable="true" 
     android:text="@string/urltext" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

目前這個代碼顯示中的文字爲 「谷歌」,然而它不是超鏈接,什麼都不會發生在點擊。

+0

你有沒有試過這個http://stackoverflow.com/questions/2734270/how-do-i-make-links-in-a-textview-clickable? – Desert

+0

@ user1873880我試過了,它似乎不能正常工作。除非有什麼遺漏的東西 –

回答

5

我簡單地通過下面的代碼解決了我的問題。

  • 不停類似HTML的字符串:

    <string name="urltext"><a href="https://www.google.com/">Google</a></string> 
    
  • 製造佈局,根本沒有具體的鏈接配置:

    <TextView 
        android:id="@+id/link" 
        android:text="@string/urltext" />` 
    
  • 添加了MovementMethod到的TextView:

    mLink = (TextView) findViewById(R.id.link); 
    if (mLink != null) { 
        mLink.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
    

現在,它允許我單擊超鏈接的文本「谷歌」,現在打開網頁瀏覽器。

此代碼是從vizZ答案在下面的鏈接Question

1
TextView text=(TextView) findViewById(R.id.text); 

    String value = "<html> click to go <font color=#757b86><b><a href=\"http://www.google.com\">google</a></b></font> </html>"; 
Spannable spannedText = (Spannable) 
       Html.fromHtml(value); 
text.setMovementMethod(LinkMovementMethod.getInstance()); 

Spannable processedText = removeUnderlines(spannedText); 
     text.setText(processedText); 

這裏是一個使用此您removeUnderlines()

public static Spannable removeUnderlines(Spannable p_Text) { 
       URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class); 
       for (URLSpan span : spans) { 
        int start = p_Text.getSpanStart(span); 
        int end = p_Text.getSpanEnd(span); 
        p_Text.removeSpan(span); 
        span = new URLSpanNoUnderline(span.getURL()); 
        p_Text.setSpan(span, start, end, 0); 
       } 
       return p_Text; 
      } 

也創造一流URLSpanNoUnderline.java

import co.questapp.quest.R; 
import android.text.TextPaint; 
import android.text.style.URLSpan; 

public class URLSpanNoUnderline extends URLSpan { 
    public URLSpanNoUnderline(String p_Url) { 
     super(p_Url); 
    } 

    public void updateDrawState(TextPaint p_DrawState) { 
     super.updateDrawState(p_DrawState); 
     p_DrawState.setUnderlineText(false); 
     p_DrawState.setColor(R.color.info_text_color); 
    } 
} 

你也可以改變它的顏色文字p_DrawState.setColor(R.color.info_text_color);

-1

添加CDATA到您的字符串資源

的strings.xml

<string name="urltext"><![CDATA[<a href=\"http://www.google.com\">Google</a>]]></string> 
+0

對我不起作用 –

相關問題