Подтвердить что ты не робот

Богатый текст в текстовом виде

Мне нужно создать "Информацию" для моей программы. Я бы хотел заполнить информационный текст несколькими цветами, стилем, шрифтами, ecc.

Я нашел это: http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring

есть ли другой способ (лучше просто) сделать это?

спасибо!

4b9b3361

Ответ 1

После прочтения вашего вопроса, я был готов дать вам ссылку на эту точную статью. Я нашел, что с помощью spans и SpannableString будет достаточно мощным. Альтернативой было бы использовать форматирование HTML для вашего текста, что можно сделать с помощью Html.fromHtml().

Однако он не совсем ясно, какие HTML-теги поддерживаются, так как документация просто читает:

Этот класс обрабатывает строки HTML в отображаемом стилизованном тексте. Не поддерживаются все HTML-теги.

Итак, для хорошего решения я бы определенно пошел с подходом SpannableString в статье. Этот метод очень удобен на практике, так как вы также можете создавать собственные классы span, расширяющие существующие (например, если вы хотите, чтобы раздел текста использовал нестандартный шрифт, который не был встроен).

Ответ 2

Я написал библиотеку за выходные, которая обрабатывает это, я назвал ее RichTextView.

Библиотека позволяет вам отформатировать диапазон текста (сделайте его полужирным, подчеркивающим, курсивным, комбинацией и т.д.), а также покрасьте его (цвет текста и подсветку). В следующем выпуске я планирую разрешить настраиваемые интервалы шрифтов и т.д.

Чтобы использовать это просто, просто добавьте следующую зависимость к вашему файлу gradle:

compile 'com.androidessence.lib:richtextview:1.0.1'

Теперь предположим, что вы хотите сделать первые четыре символа полужирным, вы можете просто сделать следующий вызов:

myRichTextView.formatSpan(0, 4, RichTextView.FormatType.BOLD);

Обратите внимание, что параметр конечного индекса не является включительным, поэтому, говоря (0 → 4), мы на самом деле являемся жирным индексом (0 → 3).

Если вы хотите сделать полужирный и подчеркнутый, используйте EnumSet:

myRichTextView.formatSpan(0, 4, EnumSet.of(RichTextView.FormatType.BOLD, RichTextView.FormatType.UNDERLINE));

Для получения последней информации см. репозиторий Github, связанный выше, хотя я попытаюсь обновить этот ответ в любое время, когда он устареет.

Ответ 3

Когда мне понадобился форматированный текст в прошлом, я создал html файл с форматированием, застрял его в каталоге res/raw и загрузил его в WebView. Я никогда не пробовал это с разными шрифтами раньше, хотя не уверен, что это сработает, но полужирный, курсив и т.д. Будет работать.