使用bulletspan时的Incorect换行

Jan*_*Jan 7 android text textedit spannablestring

我现在试图解决我的问题2天,但没有任何成功.

问题是:当我将BulletSpan设置为文本然后在EditText中显示时,一切正常,直到我开始输入另一个文本.当文本被包裹在屏幕的末尾时,缩进工作但光标指向实际位置,并且光​​标之后还添加了前一行中的一些字符.为了更好地说明此问题,请参阅附图.

跨度错误

还值得一提的是,只有当我输入文本时才会发生这种情况,当我在源文本中设置文本并且文本太长而不能只在一行上时,包装工作正常并且没有添加额外的字符也没有添加光标位置是错的.

我也试过LeadingMarginSpan.Standart,行为是一样的.

在代码我设置开始标记:

private void handleListStart(SpannableStringBuilder text) {
    int len = text.length();
    text.setSpan(new ListItem(), len, len, Spannable.SPAN_MARK_MARK);
}
Run Code Online (Sandbox Code Playgroud)

然后设置范围:

private void handleListEnd(SpannableStringBuilder text) {
    int len = text.length();
    Object obj = getLast(text, ListItem.class);
    int where = text.getSpanStart(obj);

    text.removeSpan(obj);

    if (where != len) {
        text.setSpan(new BulletSpan(listIndent * 15), where, len, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    }
}
Run Code Online (Sandbox Code Playgroud)

我从xml文件中获取数据.

谢谢你的帮助

编辑:我忘了补充一点,我在Android 4.1和4.4上尝试了这一点,两者表现相同

Qui*_*hen 1

当您的子弹跨度风格的角色换行时,就会出现此问题。

您可以在行数增加时收听,然后可以清除子弹跨度并重新设置新的子弹跨度。

上面的解决方案非常适合我。