Многоформатный текстовый просмотр

#android #android-layout

#Android #android-макет

Вопрос:

Я пытаюсь представить расположение комментариев к программе в следующей форме:

введите описание изображения здесь

Я хочу, чтобы ИМЯ пользователя было выделено жирным шрифтом, а ДАТА — подчеркнутым (красная часть должна быть обычной, я не хочу, чтобы она была красной). Моя проблема связана с красной частью. Я не могу заставить комент отображаться таким образом, используя макеты, я смог получить:

введите описание изображения здесь и введите описание изображения здесь

Есть ли какой-нибудь способ заставить комментарий работать так, как я показываю. Я думал о многоформатном TextView, возможно ли это??

Если получение подобного комментария невозможно, просто скажите, что это невозможно.

Ответ №1:

Одно из возможных решений — поместить два TextView s в Linear макет один за другим, а затем использовать SpannableStringBuilder для присвоения форматированного текста первому представлению.

 SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(text);
sb.setSpan(createBoldSpan(), 0, lengthOf(userName), 
           Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
firstTextView.setText(sb, TextView.BufferType.NORMAL);
  

createBoldSpan должен вернуться TextAppearanceSpan

 private TextAppearanceSpan userNameSpanInBold(String userName) {
    return new TextAppearanceSpan(...);
}
  

пожалуйста, следуйте документам API для TextAppearanceSpan — вы можете создать его, используя пользовательский стиль.

Ответ №2:

Вы могли бы использовать WebView с loadData, если HTML-разметка была бы хорошей, или, альтернативно, углубиться в область объемного текста.

Я сам не работал с пространственным текстом, но, по сути, он позволяет вам прикреплять атрибуты (например, стили и цвета) к частям текста в TextView.

Соответствующим методом является TextView.setText(текст в последовательности символов, тип TextView.BufferType) с типом буфера SPANNABLE. Документация, которую я видел, сбивает с толку….