5

我對TextView元素以格式化形式顯示文本時的「規則」有些困惑。TextView的HTML格式化

"There are <i>different ways</i> of coding.\n"; 

顯示字符串不帶任何格式(包括HTML代碼)當我的代碼

tvMyTextView.setText("There are <i>different ways</i> of coding.\n"); 

但是當我定義的strings.xml相同的字符串,然後加載

tvMyTextView.setText(R.strings.TestString); 

它強調顯示。

更糊塗了,我覺得試圖嵌入的URL中的TextView的喜歡這裏的時候:

"Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n"; 

不用說,我已經嘗試過的TextView的各種屬性選項 - 但他們似乎沒有多大的除非我錯過了某些東西。在某些情況下,URL是在文本中編碼的,並且可以點擊藍色,而在其他地方我可以看到HTML格式。在另外一些情況下,它是顏色編碼的,並且URL似乎以某種方式被編碼在文本中 - 但是當我點擊它時沒有任何反應。關於URL的嵌入,與另一個'簡單'HTML格式的例子不同,我甚至無法找到一條到目前爲止的規則。誰能幫我解開的疙瘩在我的頭上..

+0

試試這個 MAC

回答

5

其實,從Android文檔..

public final void setText (CharSequence text) 

設置的TextView的字符串值。 TextView不接受類似HTML的格式,您可以使用XML資源文件中的文本字符串。要設置字符串的樣式,請將android.text.style。*對象附加到SpannableString,或者參閱可用資源類型文檔以獲取在XML資源文件中設置格式化文本的示例。

但是,

public final void setText (int resid) 
  • 沒有它更規範..

但是在Android資源字符串文件..

您可以添加樣式與HTML標記的字符串。例如:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="welcome">Welcome to <b>Android</b>!</string> 
</resources> 

支持的HTML元素包括:

<b> for bold text. 
<i> for italic text. 
<u> for underline text. 

有時你可能想創建一個也用作格式字符串樣式的文本資源。通常,這將不起作用,因爲String.format(String, Object...)方法將從字符串中去除所有樣式信息。解決此問題的方法是將HTML標記寫入轉義實體,然後在格式化後使用fromHtml(String)進行恢復。

以及您的URL字符串,...

tvMyTextView.setText(Html.fromHtml("Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n")); 

也期待在這太問題Set TextView text from html-formatted string resource in XML

Android String Resource

0

要了幾個音符添加到我自己的問題到目前爲止已經收到答案後,我只能得出結論,似乎並不是一種可靠的方法,無處不在。

在某些情況下 - 根據我的經驗,如果一個格式化的URL是純文本的一部分,而不是封閉的標籤(如http://www.poon-world.com,甚至只是「Poon-World.com」似乎在大多數情況下工作),簡單地設置TextView的屬性似乎是足夠的,鏈接將是可點擊的。但是,如果鏈接嵌入在HTML標記中,並且應該可以從某些鏈接文本中點擊,則似乎除了使用Html.fromHtml(..)外沒有別的辦法。

但也有一些我不能解釋的特殊情況:在某些活動/佈局中,我使用「嵌入式」URL並設置了之前提到的Click-properties,請勿使用Html.fromHtml ..和驚喜!在文本中的確創建的鏈接點擊確實打開瀏覽器,但只有已增加下面一行在OnCreate-事件的代碼之後:

myTextView.setMovementMethod(LinkMovementMethod.getInstance()); 

(我發現這招在另一線程,感謝作者)不知道爲什麼,它似乎是字符串資源解析和Android評估的方式。我剛剛提到,除了所有已經提到的內容之外,所有其他人都在尋找解決方案並且感到困惑並不認爲他已經開始迷失自己的想法 - 不,只是在這個頁面上測試這裏提到的方法,通常應該這樣做鍛鍊。