Я запустил твой код и понял, что ты имеешь в виду.Странный пробел после «123» выглядит как графическая ошибка, потому что на самом деле он не рассматривается как символ пробела;то есть нажмите клавишу Backspace, и вы увидите, что число «3» удаляется.
При этом, к счастью, есть простое решение вашей проблемы: вам нужно изменить индексы, к которым вы применяетепролеты.Поменяйте строки в вашем собственном коде на приведенные ниже, и вы увидите, что странное белое пространство исчезло, и появилась третья пустая пуля.Это также введет некоторый промежуток между маркером и фактическим текстом, следующим за ним.
s.setSpan(new BulletSpan(), 0, 0, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new BulletSpan(), 4, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new BulletSpan(), 8, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Лично я хотел бы сделать это немного более гибким, разбить всю строку на отдельные части и перебрать их.Используя SpannableStringBuilder
, вы можете добавлять текст и устанавливать интервалы при каждой конкатенации.Под водой это уже происходит, так как во время выполнения contentET.getText()
фактически возвращает SpannableStringBuilder.:)
Также обратите внимание, что я использовал Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
, так как в противном случае вы внезапно увидите дополнительные маркеры, когда начнете удалять текст, возвращая его назад.
Результат будет выглядеть следующим образом: