Во время разработки моего последнего приложения мне пришлось провести довольно много времени, экспериментируя с разными подходами к размещению span'ов в EditText. В этом посте хотелось бы подвести некоторый итог этого времяпрепровождения, а также сэкономить время тем, кто в будущем будет решать подобные задачи.

Кода будет немного, только основные моменты.

Для начала хочу привести небольшой список фактов для того, чтобы ввести читателя в курс дела:

Несмотря на N ядер (каждое с огромной частотой), современный смартфоны все еще очень сильно уступают в производительности даже недорогим, но большим компьютерам. Каждое приложении в андроиде имеет строго ограниченный размер выделяемой памяти. И он не велик. Метод setSpan работает медленно.Чем больше работы вы вынесете в Worker'ы, тем отзывчивее будет ваше приложение.Держать подсвеченным весь текст не получится — только видимую его часть.Довольно очевидно, но все же: поиск места размещения спана в UI потоке делать не получится.

Читать дальше →
Источник: Хабрахабр про Андройд