Метод SpannableString в Android позволяет работать с динамическим текстом, изменяя его стиль, без необходимости менять сам текст. 4
Для этого используются span-объекты — объекты разметки, которые можно применять для стилизации текста на уровне символов или абзацев. 1 С их помощью можно, например, изменить цвет диапазона символов, сделать часть текста в виде ссылок, изменить размер текста, нарисовать точку перед параграфом и так далее. 2
Добавить новый span к строке можно при помощи метода setSpan(Object what, int start, int end, int flags). 2 Через первый параметр передаётся span, затем указывается диапазон индексов в тексте. 2 Последним параметром можно управлять, какое будет поведение span при вставке нового текста. 2
Если вставленный текст находится внутри границ span, то span автоматически расширяет вставленный текст. 1 Если вставленный текст находится между начальным и конечным индексами, то параметр флага решает, должен ли span включать или исключать вставленный текст. 1
Некоторые часто используемые флаги: SPANEXCLUSIVEEXCLUSIVE, SPANEXCLUSIVEINCLUSIVE, SPANINCLUSIVEEXCLUSIVE, SPANINCLUSIVEINCLUSIVE. 5