I want to implement a effect that control input characters in edittext whether use span.
For example, in EditText can use
getEditableText().setSpan(new StyleSpan(Typeface.NORMAL), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
make selected characters be BOLD.Is There have solutions that when user enable Bold setting, every character input since then will be bold, and once user disable Bold setting, characters input after that will not be bold.
I tried use Spanned.SPAN_EXCLUSIVE_INCLUSIVE as flags in SpannableStringBuilder.setSpan(), but I just can control when span's effect start, and can't control end.
Also tried use TextWatcher to listen every character input, and set Span to every character.
@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter)
{
setTextSpan(start, lengthBefore, lengthAfter);
}
private void setTextSpan(int start, int lengthBefore, int lengthAfter)
{
if (isBold) {
getEditableText().setSpan(new StyleSpan(Typeface.BOLD), start, start + lengthAfter, Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
but when use Html.toHtml(), every character be wrapped by <b></b>
.
Like<p dir="ltr"><b>1</b><b>1</b><b>1</b><b>1</b><b>1</b><b>1</b></p>
I read some source code in SpannableStringBuilder.java, but do not find any method to change span's effect scope.
Hope someone can give me some suggestions. Thanks in advance.
abcde
', but I desired result is 'abcde
' – nebulae-pan May 10 '16 at 10:36