Изменение стилей в TextView: вы можете вызвать getText, а затем setSpan? - PullRequest
0 голосов
/ 20 мая 2011

Можете ли вы вызвать getText () для TextView, а затем вызвать setSpan () для результирующего объекта? Я знаю, что это работает (по крайней мере, на телефонах, которые я пробовал в 2.2 и 2.3), но документ для getText () ясно говорит, что вы не можете изменить результат getText ().

setSpan конечно выглядел как модификация, но после тщательного прочтения документации я не уверен:

setSpan(Object what, int start, int end, int flags)
Attach the specified markup object to the range start…end of the text, or move the object     to that range if it was already attached elsewhere.

Я могу прочесть, что это говорит о том, что единственное изменение - это объект разметки (в этом случае вы не нарушаете условие doc, касающееся отсутствия модов для Spannable).

Это плохой хак, который сломается как ветка в следующем выпуске? Или вызов setSpan () каким-то образом освобожден от документа «не меняйте это» для getText ()?

(Другое обновление: в FAQ прямо сказано сделать это: http://developer.android.com/resources/faq/commontasks.html,, поэтому я думаю, что это просто вводящий в заблуждение документ.)

1 Ответ

0 голосов
/ 20 мая 2011

TextView.getText() возвращает CharSequence, а не Spannable, поэтому вы не можете предполагать, что результатом будет Spannable. Даже если это Spannable, изменение диапазона не повлияет на визуальное представление TextView. И, конечно, такие предположения не следует делать, потому что Android - это система с открытым исходным кодом, и каждый производитель может как-то ее изменить. Так что не стоит полагаться на детали реализации.

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