Jest oczywiste z source z Html.java
, że, TagHandler.handleTag()
jest wywoływana tylko wtedy, gdy struktura nie przetwarza go sama.
Obecnie struktura nie wydaje się dobrze jej przetwarzać.
Ale nawet jeśli zrobiło to dobrze, i tak chciałbyś to zmienić. Najlepszym sposobem na rozwiązanie tego problemu jest zastąpienie domyślnych tagów ul
, li
własnymi znacznikami. Ponieważ struktura nie będzie przetwarzać niestandardowych tagów, Twój użytkownik zostanie poproszony o jego obsługę przez TagHandler
.
public static String customizeListTags(@Nullable String html) {
if (html == null) {
return null;
}
html = html.replace("<ul", "<" + UL);
html = html.replace("</ul>", "</" + UL + ">");
html = html.replace("<ol", "<" + OL);
html = html.replace("</ol>", "</" + OL + ">");
html = html.replace("<dd", "<" + DD);
html = html.replace("</dd>", "</" + DD + ">");
html = html.replace("<li", "<" + LI);
html = html.replace("</li>", "</" + LI + ">");
return html;
}
a następnie można przetworzyć ciąg HTML jak
html = customizeListTags(html);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY, null, new CustomTagHandler());
} else {
//noinspection deprecation
result = Html.fromHtml(html, null, new CustomTagHandler());
}
Proszę podać [mcve]. – CommonsWare
@CommonsWare sorry. Edytowane. – okmanideep
_ "... ale nie wywołano w API-24 ..." _ Czy uruchomiłeś go na urządzeniu z Androidem N? –