ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Применение HTML-форматированной строки из XML в TextView

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для мгновенной вставки HTML в TextView примените следующий код:

Java
Скопировать код
textView.setText(Html.fromHtml(getString(R.string.html_string), Html.FROM_HTML_MODE_LEGACY));

В файле strings.xml добавьте HTML, используя CDATA:

xml
Скопировать код
<string name="html_string"><![CDATA[<b>Жирный</b> текст, <i>курсив</i>]]></string>

Метод Html.fromHtml() конвертирует HTML в Spannable текст для вашего TextView.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Обработка специальных символов HTML

Временами, работая с HTML, могут возникать сложности:

  • Символы, такие как ' (апостроф), " (кавычка), & (амперсанд), считаются специальными и требуют экранирования.
  • Чтобы корректно отобразить амперсанд, используйте &amp;, чтобы поддержать код в чистоте.

Совместимость с различными версиями Android

Подходы к работе с HTML могут отличаться в зависимости от версии Android:

  • Для Android до версии N (API 24) достаточно было использовать метод Html.fromHtml().
  • Начиная с версии Android Nougat, можно использовать Markdown или определённые флаги метода Html.fromHtml(), чтобы обеспечить элегантность и точность отображения.
  • Важным является использование Build.VERSION.SDK_INT для проверки версии Android API.

Пользовательские классы и атрибуты

Создайте подкласс TextView для расширения функционала:

Java
Скопировать код
public class HtmlTextView extends TextView {
    public HtmlTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HtmlTextView);
        String htmlText = a.getString(R.styleable.HtmlTextView_htmlText);
        if (htmlText != null) {
            setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
        }
        a.recycle();
    }
}

Такое решение намного элегантнее, чем привлечение Activity для форматирования TextView.

Отказ от устаревших методов

С каждым обновлением Android разработчикам приходится вносить изменения в свой код.

  • Применяйте HtmlCompat.fromHtml() из библиотеки AndroidX.
  • Следите за тем, чтобы strings.xml соответствовал последним рекомендациям Android.

Визуализация

Применение HTML-форматированных строк в XML для элемента TextView выглядит так:

xml
Скопировать код
<TextView
    android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/html_formatted_string" />

Элемент в strings.xml:

xml
Скопировать код
<string name="html_formatted_string">
<![CDATA[
    <b>Жирный</b> и <i>Курсив</i> текст.
]]>
</string>

Обычный текст в XML: "Жирный и Курсив текст."

Текст на экране после преобразования: Жирный и Курсив текст.

Неофициальные методы и техники

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

Сторонние библиотеки на помощь

В случаях, когда встроенные средства не справляются:

  • Markwon используется для отображения Markdown в TextView, как альтернатива HTML-форматированию.
  • Библиотеки, такие как RichTextView, облегчают работу с HTML и Markdown.

Изысканное стилизование текста

Оформляйте тексты в TextView так, как будто это делает ваш личный дворецкий:

  • Используйте жирный, курсив, подчеркнутый и другие стили прямо в strings.xml.
  • Забудьте о getString() и используйте getText(), чтобы сохранить все стилевые элементы вашего текста.

Пользовательский TextView — кратчайший путь к успеху

Использование пользовательского TextView раскрывает новые возможности управления отображением HTML и уменьшает дублирование кода.

Полезные материалы

  1. Строковые ресурсы | Разработчики Android — подробное руководство по строковым ресурсам в Android-разработке.
  2. android – Как отобразить HTML в TextView? – Stack Overflow — сообщество, где профессионалы помогают решить проблемы.
  3. Строковые ресурсы | Разработчики Android — детально о стилизации текста с помощью HTML в Android.
  4. XML в Android: Основы и разные XML-файлы, используемые в Android | Abhi Android — исчерпывающее руководство по XML в Android.
  5. Обзор ресурсов приложений | Разработчики Android — руководство по ресурсам в приложениях Android.
  6. Домашняя страница · codepath/android_guides wiki · GitHub — коллекция кодовых фрагментов и руководств для разработчиков на Android.