2014-10-07 60 views
1

如何在用戶編寫時在EditText文本上應用跨度?Android EditText:如何在撰寫時應用跨度?

例如,用戶在撰寫時已激活「粗體」,因此從此之後的每個字符輸入應該是粗體

我想過如何將文本更改偵聽器添加到EditText並根據用戶撰寫更新文本,但是我想知道是否有更好的方法來完成此操作。

+0

見你不需要任何東西:例如設定的3長度大膽跨越,然後將裏面的插入符號並開始鍵入.. – pskink 2014-10-07 18:15:07

+0

@pskink - 但如果沒有文字呢? – user3705007 2014-10-07 18:17:00

+0

提示:嘗試不同的setSpan的標誌 – pskink 2014-10-07 18:21:25

回答

0

這個問題已經在評論中得到了回答,但爲了讓它更加永久,我會添加一個更全面的答案。

爲了設置一個跨度(如粗體),無論用戶在哪裏編寫,只需在光標(或選擇)位置的文本上設置跨度。

StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); 
int start = editText.getSelectionStart(); 
int end = editText.getSelectionEnd(); 
int flag = Spannable.SPAN_INCLUSIVE_INCLUSIVE; 
editText.getText().setSpan(boldSpan, start, end, flag); 

SPAN_INCLUSIVE_INCLUSIVE標誌意味着任何文本之前或之後的跨度將被包括在所述跨度,即使文本長度爲0添加的跨度時加入。