android - 使用 bulletspan 时换行不正确

标签 android text textedit spannablestring

我已经尝试解决我的问题 2 天了,但没有成功。

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

Span Error

另外值得一提的是,只有当我输入文本时才会发生这种情况,当我在源代码中设置文本并且文本太长而不能只在一行上时,换行效果很好,没有添加额外的字符,也没有光标位置错误。

我也试过 LeadingMarginSpan.Standart,结果是一样的。

在代码中我设置了开始标记:

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

然后设置跨度:

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);
    }
}

我正在从 xml 文件中获取数据。

感谢您的帮助

编辑: 我忘了补充一点,我已经在 Android 4.1 和 4.4 上尝试过,两者的行为相同

最佳答案

当您的 bulletspan 样式字符换行时会发生此问题。

当行数增加时你可以监听,然后你可以清除bulletspan并重新设置一个新的bulletspan。

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

关于android - 使用 bulletspan 时换行不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703009/

相关文章:

android - 全屏全息对话框

android - 如何让 root 为 Android 中的系统应用程序工作?

android - 错误:无法在[row,col]:[28,9]处解析XML ParseError消息:预期的开始或结束标记受影响的模块:app

android - Firestore/Firebase 无法从文件夹获取图像

sql - 获取不带 NULL 值的 SQL 不同行

audio - 直接来自音频/转录的语音到文本(语音识别)

java - 如何获取二维数组中的单词和行列表?

javascript - AppleScript 变量传递给 JavaScript

android - 如何在 Flutter 的 TextField 中显示错误图标

python - 如何连接字典(值到相同键和新键的值)?