问题场景
自定义文本框,点击添加自定义样式会是上一行的后段部分换行显示。
问题代码部分如下:
//自定义样式
NoteCheckBoxSpan span = new NoteCheckBoxSpan(getContext(), R.mipmap.ic_note_edit_uncheck);
SpannableString ss = new SpannableString(String.valueOf(NoteEditorConfig.PlaceHoldChar));
ss.setSpan(span, 0, ss.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
分析
注意到设置自定义span的时候要指定flagSpanned.SPAN_INCLUSIVE_EXCLUSIVE
,问题就出现在该部分。
样式影响了上一行导致的换行。
它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。Spanned.SPAN_EXCLUSIVE_EXCLUSIVE (前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE (前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE (前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE (前后都包括)
修改
修改标识为前后都不影响效果,该问题解决
ss.setSpan(span, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);