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

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

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

sbDest.insert (0, sbSrc)

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

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

Причина, по-видимому, заключается в коде этого комментария в SpannableStringBuilder.java:

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

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

Спасибо

1 Ответ

0 голосов
/ 17 января 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...