#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. Документация, которую я видел, сбивает с толку….