我正在尝试解决我的问题 2 天,但没有任何成功。
问题是:当我将 BulletSpan 设置为文本然后在 EditText 中显示它时,一切正常,直到我开始输入另一个文本。当文本在屏幕末尾换行时,缩进起作用,但光标指向实际位置,并且在光标之后添加了上一行的一些字符。为了更好地说明这个问题,请参见附图。
还值得一提的是,这仅在我输入文本时发生,当我在源中设置文本并且文本太长而不能仅在一行上时,换行工作正常,没有添加额外的字符,也没有光标位置是错的。
我也尝试了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 上尝试过,并且两者的行为相同