我正在嘗試爲我的應用程序製作一個功能,用戶可以在其中進行粗體選擇,但我也希望這樣做,以便如果所選文字已經是粗體,那麼文本應該再次設置爲正常,這是一種撤銷功能。從Edittext粗體和非粗體中製作選定的文字
我已經嘗試了超過100種組合而沒有任何成功!
CharacterStyle csBold = new StyleSpan(Typeface.BOLD);
CharacterStyle csNormal = new StyleSpan(Typeface.NORMAL);
int start = editText.getSelectionStart();
int end = editText.getSelectionEnd();
SpannableStringBuilder ssb = new SpannableStringBuilder(editText.getText());
ssb.setSpan(csBold, start, end, 1);
SpannableStringBuilder ssb2 = new SpannableStringBuilder(editText.getText());
ssb2.setSpan(csNormal, start, end, 1);
switch(item.getItemId()) {
case R.id.bold:
while(editText.isSelected()){
if(editText.getSelectionStart() + editText.getSelectionEnd() == ssb.getSpanStart(start) + ssb.getSpanEnd(end)){
editText.setText(ssb2);
return true;
}else{
editText.setText(ssb);
return true;
}
}
問題已經解決,原來的解決方案可以在這裏找到:http://stackoverflow.com/a/ 33835506/5366495 – Muddz