Paste without rich text formatting into EditText
android, android-edittext, richtext, rtf
Solution
The problem with `clearSpans()` was that it removed too much and the editText behaves weird thereafter. By following the approach in this answer I only remove the `MetricAffectingSpan` and it works fine then.
For me the only problem was the size of the text. If you have other problems you'd have to adjust what you want to remove.
public void afterTextChanged(Editable string)
{
CharacterStyle[] toBeRemovedSpans = string.getSpans(0, string.length(),
MetricAffectingSpan.class);
for (int index = 0; index < toBeRemovedSpans.length; index++)
string.removeSpan(toBeRemovedSpans[index]);
}
}
Problem
If I copy/paste text from Chrome for Android into my EditText view it gets messed up, apparently due to rich text formatting. Is there a way to tell the EditText view to ignore rich text formatting? Or can I catch the paste event and remove it before it gets set? How would I do that? UPDATE: So I realized that the `editText.getText()` gives me a `SpannableString` that contains some formatting. I can get rid of that by calling `.clearSpans();` on it. BUT I cannot do anything like that in `editText.addTextChangedListener(new TextWatcher() { … }` because it gets terribly slow and the UI only updates when I leave the editText view.