I have implemented a Custom EditText which can take Bold, Italics, Underline text. Everything works fine except when I try to delete text by long pressing the backspace button. On long pressing backspace there is a delay in clearing the text.
Here is the overriden onTextChanged() method
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
Log.d(VIEW_LOG_TAG,"Start: "+start+" Length before: "+lengthBefore+" Length After: "+lengthAfter+" TextLength: "+text.length());
Spannable str = this.getText();
CharacterStyle ss;
UnderlineSpan ss1=null;
int endLength = text.toString().length();
switch (currentTypeface) {
case TYPEFACE_NORMAL:
ss = new StyleSpan(Typeface.NORMAL);
break;
case TYPEFACE_BOLD:
ss = new StyleSpan(Typeface.BOLD);
break;
case TYPEFACE_ITALICS:
ss = new StyleSpan(Typeface.ITALIC);
break;
case TYPEFACE_BOLD_ITALICS:
ss = new StyleSpan(Typeface.BOLD_ITALIC);
break;
case TYPEFACE_UNDERLINE:
ss= new UnderlineSpan();
break;
case TYPEFACE_BOLD_UNDERLINE:
ss = new StyleSpan(Typeface.BOLD);
ss1=new UnderlineSpan();
break;
case TYPEFACE_ITALICS_UNDERLINE:
ss = new StyleSpan(Typeface.ITALIC);
ss1=new UnderlineSpan();
break;
case TYPEFACE_BOLD_ITALICS_UNDERLINE:
ss = new StyleSpan(Typeface.BOLD_ITALIC);
ss1=new UnderlineSpan();
break;
default:
ss = new StyleSpan(Typeface.NORMAL);
}
if(lastCursorPosition>endLength)
return;
Log.d(TextArea.class.getSimpleName(), new Integer(lastCursorPosition).toString() + new Integer(endLength).toString());
if(ss1!=null)
str.setSpan(ss1, lastCursorPosition, endLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(ss, lastCursorPosition, endLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}