2010-05-26 46 views
2

我有更長的句子> 200個字符。我需要在屏幕上顯示不同顏色的部分,例如突出顯示搜索結果,每種顏色都有不同的顏色。文本應該自動包裹屏幕寬度,並且在部件之間沒有中斷部分。我的意思是,我可以把部分放在一個新的線上。他們將不得不繼續上一節,只在屏幕關閉時才換行。我有哪些選項可以顯示不同顏色的句子部分?

最好的將是一個EditText,因爲我需要允許編輯,但我想知道我能夠改變各種句子部分的顏色,或者只是作爲一個整體。

您如何看待我的UI元素?

回答

6

有或多或少的兩種不同的方式來實現這一目標:

1) 的,我認爲,官方的方法,使用Spannable:

http://developer.android.com/reference/android/text/Spannable.html

隨着Spannable你可以這樣做這:

Spannable spannable = (Spannable) yourTextView.getText(); 
spannable.setSpan(new BackgroundColorSpan(0xFF0000), startPosition, endPosition, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

有不同Spannables像BackgroundColorSpan,我在例子中使用代碼。該標誌解釋herethis包你可以找到不同Spannable的可能性。

2) 一個更簡單的方法,但或多或​​少沒有記錄的方式是使用HTML標記。你可以例如使用這樣的代碼:

String textString ="<font color='#ff0000' > <b>hello</b> </font>" 

yourTextView.setText(Html.fromHtml(textString)) 

我不確定支持哪些HTML標記。我不知道這個文件,所以我認爲你只需要嘗試。但至少粗體字體和彩色字體正在我的應用程序中使用的代碼中工作。

+0

在這裏你可以在普通軟件中找到支持的標籤博客 http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview。html – RoflcoptrException 2010-05-26 21:39:45

+0

足夠奇怪的BackgroundColorSpan似乎被繪製在光標頂部,所以它不再可見... – ubuntudroid 2011-07-02 13:55:47

1

http://developer.android.com/reference/android/text/Spannable.html

您也可以使用文本資源有限類似HTML的標記,在這種情況下,資源會被編譯成一個Spannable。該標籤<我>,<b>,<TT>,<大>,<小>,<罷工>,<ū>,<SUP>,<子>,<李>,<選取框>,<字體fgcolor = bgcolor = height = size = >,< a href = >,<註釋名稱= >全部被接受。可能還有其他的,但如果他們沒有記錄,他們可能不安全使用。請參閱StringBlock.java

我找不到關於Html類的任何官方文檔,但text/Html.java中的文檔字符串很有幫助。這個班似乎是公開的。謝謝指出這個Sebi。

相關問題