2012-07-01 63 views
1

我一直在嘗試使用模式或其他utils找出這一點,但尚未得到它的工作。如何將文本鏈接設置爲實際的URL而不是HTML中的文本標籤

說我有一個HTML鏈接:

<a href="http://www.google.com">Google, Inc.</a> 

我想打一個鏈接到一個文本視圖,但是設置鏈接爲實際URL的文本而不是谷歌公司

所以對於例如,如果我收到的數據是:

- 嗨,如果您想嘗試搜索,請轉至<a href="http://www.google.com">Google, Inc.</a>,這很容易。

我希望它顯示爲:如果你想嘗試搜索去http://www.google.com

--Hey,很容易爲。

相反的:

--Hey如果你想嘗試搜索去谷歌公司和它很容易爲。

Html.fromHtml()使其顯示爲「Google,Inc.」自動,但不是我想要的結果。

此外,我不需要這個具體的例子,我需要它爲所有的HTML鏈接工作,因爲我不知道什麼樣的鏈接,我會得到的數據。

回答

0

我建議使用Linkify並自己解析字符串來創建你想要的鏈接。

設置Linkify尋找原始網頁地址,並把他們變成你的文字鏈接:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:autoLink="web" 
    /> 

此功能將拉動原始地址出來的html標籤:

public String parseLinks(String raw) { 
    String openTag = "<a href=\""; 
    String closeTag = "</a>"; 
    String result = ""; 

    int start = 0; 
    int middle = raw.indexOf(openTag); 
    int end; 
    while(middle > -1) { 
     result += raw.substring(start, middle); 

     end = raw.indexOf("\">", middle); 
     result += raw.substring(middle + openTag.length(), end); 

     start = raw.indexOf(closeTag, end) + closeTag.length(); 
     middle = raw.indexOf(openTag, start); 
    } 

    result += raw.substring(start, raw.length()); 
    return result; 
} 

明白這函數沒有錯誤檢查,我建議你自己添加這個。

現在簡單地傳遞來自parseLinks()到您的TextView返回的字符串,像這樣:

textView.setText(parseLinks(rawHTML)); 

希望幫助!

+0

我不能給予好評答案山姆但是這爲我工作。謝謝一堆! – user1493859

1

它實際上很棘手....但我找到了一種方法來做到這一點。

感謝SO。

這裏就是答案:

TextView tvYourTextView = (TextView) findById(R.id.yourTextViewThatShowsALink); 

tvYourTextView.setMovementMethod(LinkMovementMethod.getInstance()); //that will make your links work. 

PS: 不要忘記使用Html.fromHtml("your content as html")

相關問題