Какие теги HTML поддерживаются классом Android HTML и как мне использовать HtmlCompat? - PullRequest
0 голосов
/ 16 января 2020

Я ищу краткое описание тегов и свойств HTML, поддерживаемых классом Android Html, в частности, тегов, обработанных Html # из Html ( ) . Официальная документация гласит, что «поддерживаются не все теги HTML», но это не очень полезно. Другая документация, которую я нашел в Интернете, кажется устаревшей и мало что говорит о поддерживаемых свойствах.

Кроме того, я считаю, что мне следует использовать HtmlCompat вместо Html, но мне не ясно, что делает HtmlCompat . В документации говорится, что HtmlCompat является «обратно совместимой версией Html», но что это значит? При работе на устройстве с уровнем API ниже 24 я ожидаю, что HtmlCompat # from Html () будет принимать те же теги, что и Html для API 24+ устройства, но это не так.

1 Ответ

0 голосов
/ 16 января 2020

HtmlCompat

Давайте сначала рассмотрим HtmlCompat . Одна из причин использования класса поддержки библиотеки (в настоящее время AndroidX) заключается в том, чтобы «поддерживать новейшую функцию платформы на устройствах с более ранними версиями платформы». Из рассмотрения исходного кода для HtmlCompat становится ясно, что обратная совместимость, которую он предлагает, заключается в разрешении вызовов HtmlCompat # от Html () (String source, int flags) .

[ HtmlCompat # from Html (String, int) ] вызывает Html # из Html ( String, int) в API 24 и новее, в противном случае флаги игнорируются и используется Html # from Html (String).

То же самое верно для HtmlCompat # до Html (Spanned text, int options) .

Итак, HtmlCompat делает не обеспечивать поддержку новых поддерживаемых тегов в версиях API ниже API 24. На самом деле нет разницы в тегах, поддерживаемых HtmlCompat и версией платформы Html для любого API level.

HTML Теги, поддерживаемые Html / HtmlCompat

Классы Android Html и HtmlCompat поддерживают следующие HTML теги, начинающиеся с API 24. Следующее основано на проверке класса Html, обнаруженного в API 29.

Поддерживает тег href.


1





> 1

Поддерживает цвет и свойства лица.
1

image Поддерживает тег sr c с Html # ImageGetter.
> 1 2
1 2


2





1

Другие теги могут поддерживаться с помощью Html # TagHandler.

1 Элемент поддерживает свойство стиля text-align . Поддерживаемые значения для text-align : start , center и end . ( justify не поддерживается.)

2 Тег поддерживает color , background [-color] и текстовое оформление свойства. Единственное поддерживаемое значение для text-decor - line-through . Подробнее о поддержке цвета см. Ниже.

3 face может быть любым именем гарнитуры, поддерживаемым классом TypefaceSpan.

Html # from Html () Флаги

Значения аргумента Флаги для Html # из Html () :

FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE
FROM_HTML_SEPARATOR_LINE_BREAK_DIV
FROM_HTML_SEPARATOR_LINE_BREAK_HEADING
FROM_HTML_SEPARATOR_LINE_BREAK_LIST
FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM
FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH

1170 * Каждый из предыдущих флагов специфицирует, что HTML процессор должен добавить одну строку после каждого названного уровня блока элемент. Если флаг не установлен, то процессор добавляет две новые строки, что является устаревшим поведением.

Например: Установка FROM_HTML_SEPARATOR_LINE_BREAK_HEADING добавит одну новую строку после заголовка (

, , et c.) FROM_HTML_MODE_LEGACY : если этот флаг установлен, то после каждого элемента уровня блока будут добавлены две новые строки. Установка этого флага аналогична передаче нуля. FROM_HTML_MODE_COMPACT : использование этого флага аналогично указанию всех флагов разрыва строки, которые будут удалять все дополнительные символы новой строки из элементов уровня блока , (Будет добавлен только один символ новой строки.) FROM_HTML_OPTION_USE_CSS_COLORS : Для именованных цветов используйте значения CSS цифра c вместо значений, определенных классом Android Цвет . Например, если в качестве цвета указано «darkgray», и этот флаг установлен, то значением цвета будет значение CSS для «darkgray» (0xFFA9A9A9) вместо значения «darkgray», определенного в Color класс (0xFF444444). Если этот флаг не установлен, то значением будет значение из класса Color . CSS Цвета Цвета, определенные в классе Color: цвета морской волны, черный, синий, голубой, темно-серый, темно-серый, фуксия, серый, зеленый, серый, светло-серый, светло-серый, салатовый, пурпурный, темно-бордовый, темно-синий, оливковый, фиолетовый, красный, серебристый, чирок, белый, желтый CSS цвета, отличающиеся от Android Цветовые классы цвета: темно-серый, темно-серый, серый, серый, светло-серый, светло-серый, зеленый Хотя «белый» определен как допустимый цвет в классе Color, его значение (0xFFFFFFFF) приводит к тому, что обработка вообще игнорирует цвет. Это связано с тем, что значение, возвращаемое для «white» классом Color (0xFFFFFFFF), интерпретируется как условие «not found» (-1). Один способ - указать 0xFFFFFF для цвета «белый» и пусть обработка добавляет ведущий «FF».

...