我有更長的句子> 200個字符。我需要在屏幕上顯示不同顏色的部分,例如突出顯示搜索結果,每種顏色都有不同的顏色。文本應該自動包裹屏幕寬度,並且在部件之間沒有中斷部分。我的意思是,我可以把部分放在一個新的線上。他們將不得不繼續上一節,只在屏幕關閉時才換行。我有哪些選項可以顯示不同顏色的句子部分?
最好的將是一個EditText,因爲我需要允許編輯,但我想知道我能夠改變各種句子部分的顏色,或者只是作爲一個整體。
您如何看待我的UI元素?
我有更長的句子> 200個字符。我需要在屏幕上顯示不同顏色的部分,例如突出顯示搜索結果,每種顏色都有不同的顏色。文本應該自動包裹屏幕寬度,並且在部件之間沒有中斷部分。我的意思是,我可以把部分放在一個新的線上。他們將不得不繼續上一節,只在屏幕關閉時才換行。我有哪些選項可以顯示不同顏色的句子部分?
最好的將是一個EditText,因爲我需要允許編輯,但我想知道我能夠改變各種句子部分的顏色,或者只是作爲一個整體。
您如何看待我的UI元素?
有或多或少的兩種不同的方式來實現這一目標:
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,我在例子中使用代碼。該標誌解釋here和this包你可以找到不同Spannable的可能性。
2) 一個更簡單的方法,但或多或少沒有記錄的方式是使用HTML標記。你可以例如使用這樣的代碼:
String textString ="<font color='#ff0000' > <b>hello</b> </font>"
yourTextView.setText(Html.fromHtml(textString))
我不確定支持哪些HTML標記。我不知道這個文件,所以我認爲你只需要嘗試。但至少粗體字體和彩色字體正在我的應用程序中使用的代碼中工作。
見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。
在這裏你可以在普通軟件中找到支持的標籤博客 http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview。html – RoflcoptrException 2010-05-26 21:39:45
足夠奇怪的BackgroundColorSpan似乎被繪製在光標頂部,所以它不再可見... – ubuntudroid 2011-07-02 13:55:47