14

要獲得TextView顯示(和行爲與友好的)HTML絃樂器我的代碼看起來像:如何解決Html.fromHtml鏈接焦點可見性問題(在ICS和Honeycomb中)?

// itemHtml is a String of HTML defined above 

TextView itemContent = (TextView) findViewById(R.id.itemContent); 
itemContent.setText(Html.fromHtml(itemHtml)); 
itemContent.setMovementMethod(LinkMovementMethod.getInstance()); 

如果HTML字符串有一個鏈接,TextView結果是可以點擊的,可聚焦的鏈接。當用戶專注於特定的鏈接(例如通過使用d-pad)時,鏈接文本以某種有意義的方式變化以顯示獲得焦點。

問題是,當我使用具有使用Honeycomb(例如Google TV)或Android的冰淇淋三明治風味的d墊的設備測試此相同模式時,文本中的鏈接不顯示該鏈接有焦點。

我知道它是越來越關注,因爲當你然後按回車它執行指定的操作。你甚至可以在文本中的各種鏈接之間移動;你只是猜測你當前在哪個鏈接,這會導致非常糟糕的用戶體驗。

有什麼我做錯了嗎?有沒有辦法解決這個問題或解決這個問題?

回答

1

HTML.fromHTML操作的方式是在字符串的各個字符中創建具有不同效果的「跨度」。一種解決方法是使用ClickableSpan加上另一個CharacterStyles將文本着色爲可點擊。之前的跨度將允許您註冊回調,並且此回調可以是廣播意圖查看網址(這將打開瀏覽器)。

+0

我想你誤會了。正如我所提到的,這個動作(即打開URL)被調用。問題是沒有可視化的表示,鏈接被選中。 – yydl

1

Honeycomb +的文本顏色狀態列表可能未將聚焦狀態設置爲不同的顏色,或者將顏色重寫爲常量。

檢查色彩+樣式your_android_sdk_directory/Android的14 /數據/ RES/

設置文本到Android:自動鏈接= 「網絡」 也可能幫助?

1

要做到這一點的最好方法是將CSS樣式添加到您的HTML。我知道Android支持:hover選擇器。所以,你可能正確的是這樣的:

String myLink = "<a href=\"http:\/\/google.com\">your link</a>" 
Html.fromHtml(myLink); 

,並找到一種方法,CSS數據包括它:(我不知道怎麼樣,但我認爲這是可能的)

a :hover { 
    color: red; 
} 

UPDATE:

我認爲你的問題的答案是there

2

編輯:會有點堅果後,我終於以爲我找到了解決辦法。但是,此解決方案僅適用於Honeycomb。 ICS仍然沒有解決!

從API 11開始,Android在TextView上有一個新的設置,用於定義文本是否可選。

你可以將它在一個TextView使用setTextIsSelectable(true)設置,或在XML佈局android:textIsSelectable="true"

定義它,它可能是最好的XML來定義它,因此,保持應用程序向後兼容是微不足道的。只要確保您的版本大於等於11,或者您可能會遇到錯誤。

+0

我試過了,它的工作,謝謝 – junto

+0

@ junto歡迎您。但它是否也適用於ICS? – yydl

相關問題