У меня есть простой HTML :
<h2>Title</h2><br>
<p>description here</p>
Я хочу отобразить текст в стиле HTML это в TextView
. Как это сделать?
У меня есть простой HTML :
<h2>Title</h2><br>
<p>description here</p>
Я хочу отобразить текст в стиле HTML это в TextView
. Как это сделать?
Ответы:
Вы должны использовать,
Html.fromHtml()
чтобы использовать HTML в ваших XML-строках. Простая ссылка на строку с HTML в вашем макете XML не будет работать.Это то, что вы должны сделать:
источник
h2
по определению создает большой запас вокруг себя. аp
также поставляется с некоторым запасом. Если вы не хотите разрыв, вы можете рассмотреть возможность использования других HTML-элементов.android.text.Html.fromHtml
. Я знаю, что большинство IDE исправят это для вас, но для удобства чтения лучше знать имена пакетов.SetText (Html.fromHtml (bodyData)) является устаревшим после апи 24. Теперь вы должны сделать это:
источник
Посмотрите на это: https://stackoverflow.com/a/8558249/450148
Это тоже очень хорошо!
Это работает только для нескольких тегов.
источник
Если вы хотите иметь возможность настроить его через XML без каких-либо изменений в коде Java, вы можете найти эту идею полезной. Просто вы вызываете init из конструктора и устанавливаете текст как HTML
XML:
источник
Если вы пытаетесь отобразить HTML из строкового идентификатора ресурса, форматирование может не отображаться на экране. Если это происходит с вами, попробуйте вместо этого использовать теги CDATA:
...
Смотрите этот пост для получения дополнительной информации.
источник
Код ниже дал лучший результат для меня.
источник
источник
Если вы просто хотите отобразить некоторый HTML-текст и не нуждаетесь в нем
TextView
, возьмитеWebView
и используйте его следующим образом:Это не ограничивает вас несколькими html-тегами.
источник
layout_height="wrap_content"
. Вместо этого вам придется установить явную высоту или match_parent.Наилучший подход к использованию разделов CData для строки в файле strings.xml, чтобы получить фактическое отображение HTML-содержимого в TextView, приведенный ниже фрагмент кода, даст вам правильную идею.
Раздел CData в тексте строки сохраняет данные тега html без изменений даже после форматирования текста с использованием метода String.format. Итак, Html.fromHtml (str) работает нормально, и вы увидите жирный текст в приветственном сообщении.
Вывод:
источник
Стоит отметить, что метод Html.fromHtml (String source) устарел начиная с уровня API 24. Если это ваш целевой API, вам следует использовать Html.fromHtml (String source, int flags) .
источник
Я также хотел бы предложить следующий проект: https://github.com/NightWhistler/HtmlSpanner
Использование почти такое же, как по умолчанию конвертер Android:
Нашел его после того, как я уже начал собственную реализацию конвертера html в spannable, потому что стандартный Html.fromHtml не обеспечивает достаточной гибкости управления рендерингом и даже не дает возможности использовать пользовательские шрифты из ttf.
источник
Я знаю, что этот вопрос старый. Другие ответы здесь предлагают
Html.fromHtml()
метод. Я предлагаю вам использоватьHtmlCompat.fromHtml()
изandroidx.core.text.HtmlCompat
пакета. Как это обратно совместимая версияHtml
класса.Образец кода:
Таким образом, вы можете избежать проверки версии Android API, и она проста в использовании (однострочное решение).
источник
Простое использование
Html.fromHtml("html string")
. Это будет работать Если в строке есть такие теги как,<h1>
то пробелы появятся. Но мы не можем устранить эти пробелы. Если вы все еще хотите удалить пробелы, вы можете удалить теги в строке, а затем передать строку в методHtml.fromHtml("html string");
. Также, как правило, эти строки поступают с сервера (динамические), но не часто, если лучше передать строку в метод, чем пытаться удалить теги из строки.источник
источник
Сделайте глобальный метод как:
Вы также можете использовать его в своей деятельности / фрагменте, например:
источник
Я реализовал это с помощью веб-просмотра. В моем случае я должен загрузить изображение из URL вместе с текстом в текстовом представлении, и это работает для меня.
источник
Было предложено с помощью различных ответов использовать Html класс среды как предложено здесь, но , к сожалению , этот класс имеет различное поведение в разных версиях Android и различных безадресных ошибок, как показано в вопросах 214637 , 14778 , 235128 и 75953 .
Поэтому вы можете использовать библиотеку совместимости для стандартизации и переноса класса Html в версиях Android, который включает в себя больше обратных вызовов для элементов и стилей:
Несмотря на то, что он похож на класс Html фреймворка, некоторые изменения подписи потребовались, чтобы разрешить больше обратных вызовов. Вот пример со страницы GitHub:
источник
Всякий раз, когда вы пишете пользовательский текстовый вид, основные функции набора текста будут исчезать с некоторых устройств.
Таким образом, мы должны сделать следующие дополнительные шаги сделать это работа
источник
обновление ответа выше
источник
Используйте код ниже, чтобы получить решение:
Utitilty Метод
источник
Созданы расширения Kotlin для преобразования html из String -
источник
Могу я предложить какое-то хакерское, но все же гениальное решение! Я получил идею из этой статьи и адаптировал ее для Android. В основном вы используете
WebView
и вставляете HTML, который хотите показать и редактировать, в редактируемый тег div. Таким образом, когда пользователь нажимает,WebView
появляется клавиатура и можно редактировать. Они просто добавляют JavaScript, чтобы вернуть отредактированный HTML и вуаля!Вот код:
А вот и составляющая как суть.
Примечание. Мне не требовался обратный вызов для изменения высоты по сравнению с исходным решением, поэтому его здесь нет, но вы можете легко добавить его при необходимости.
источник
Если вы используете
androidx.
* классы в вашем проекте, вы должны использоватьHtmlCompat.fromHtml(text, flag)
. Источник метода:@NonNull public static Spanned fromHtml(@NonNull String source, @FromHtmlFlags int flags) { if (Build.VERSION.SDK_INT >= 24) { return Html.fromHtml(source, flags); } //noinspection deprecation return Html.fromHtml(source); }
Это лучший способ, чем Html.fromHtml, так как кода меньше, только одна строка и рекомендуемый способ его использования.
источник
Вы можете использовать простую функцию расширения Kotlin следующим образом:
И использование:
источник
Просто используйте:
источник