2013-07-27 41 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

对我不起作用 –

相关问题