SpannableStringBuilder.insert() не вставляет диапазон, если диапазон этого типа уже присутствует в месте назначения

У меня есть 2 SpannableStringBuilders, sbDest и sbSrc.

Я хочу вставить sbSrc в sbDest:

sbDest.insert (0, sbSrc)

Это работает - и sbDest заканчивается промежутками, которые он имел до вставки плюс те, которые присутствуют в sbSrc.

Однако, если sbSrc содержит диапазон типа, который уже присутствует в sbDest, этот диапазон не вставляется.

Кажется, причиной является код под этим комментарием в SpannableStringBuilder.java:

// Добавить span, только если этот объект еще не используется в качестве span в этой строке

Кто-нибудь знает, почему это поведение, и есть ли обходной путь?

Спасибо

1 ответ

Ответил на мой собственный вопрос...

Во-первых, я получал sbSrc из sbDest (для реализации функций копирования / вставки), используя

SpannableStringBuilder ssbSrc = новый SpannableStringBuilder(ssbDest.subSequence(начало, конец));

subSequence () действительно копирует промежутки, но не клонирует их, поэтому ssbSrc заканчивается САМыми промежутками (теми же экземплярами объектов, а не просто теми же типами), что и в ssbDest... и именно поэтому sbDest.insert() не вставляет их.

Другие вопросы по тегам