2014-02-11 3 views
5

Я пытаюсь решить свою проблему в течение 2 дней, но без каких-либо успехов.Обрезать обертку при использовании bulletspan

Проблема заключается в следующем: когда я устанавливаю 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-файла.

Спасибо за любую помощь

EDIT: я забыл добавить, что я попробовал это на Android 4.1 и 4.4, и оба вели себя тот же

+0

Вы нашли решение? –

ответ

0

Эта проблема происходит, когда ваши персонажи bulletspan стиле прийти к новая линия.

Вы можете слушать, когда линии увеличиваются, тогда вы можете очистить маркер и снова установить новый флажок.

Solutiion выше отлично работает для меня.

+0

некоторый пример кода был бы полезен –