2017-07-28 85 views
0

於選擇的文本應用兩個跨度後,這個問題是非常惱人所以我要多多跟蹤下來的點點滴滴,所以你可以完全理解unspanned: -最後一個字符獲取的EditText

首先,我選擇的最後一個字在我的編輯文本像這樣: -

enter image description here

到目前爲止簡單的話,我使文本加粗通過點擊按鈕(設定了一個大膽的跨度),像這樣: -

enter image description here

下劃線只是softkeyboard中的默認文本更正。然後我重新選擇的文本: -

enter image description here

然後,當我讓斜體以同樣的方式(通過按下一個按鈕設置斜體跨度)我得到這樣的: -

enter image description here

最後字符不會從粗體中突出。這隻發生在這種特定情況下,當我選擇這個單詞和單詞在末尾的編輯文本。

而且我發現,當跨度爲每個字符設置,如果其對整個單詞它不會發生,就會出現此問題(對於粗體和斜體): -

//for each char 
for (int i = 0; i < token.length(); i++) {//token is the word 
SpannableString char = (SpannableString) token.subSequence(i, i + 1); 

char.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0, 
char.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
} 

但如果全字問題不會發生: -

// for the whole word 

token.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0, 
token.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
} 

但當然用戶可以設置跨度對於一個char,所以這個問題還是其他相關的,如果在編輯文本的到底是不是選擇的話不會出現問題。

回答

0

我終於在提取選擇標記之前,通過在最後一個索引之後添加一個空格字符來找到解決方案。

selectionStart = noteview.getSelectionStart(); 
selectionEnd = noteview.getSelectionEnd(); 

if(noteview.hasSelection()&&selectionEnd==noteview.length()) { 
SpannedString sp=SpannedString.valueOf(" "); 
edittext.setText(TextUtils.concat(edittext.getText(),sp)); 
} 

有時,最簡單的解決方案是最好的解決辦法:)。

相關問題