Оказалось, что setHtml(..)
метод вызывает setMovementMethod(LocalLinkMovementMethod.getInstance());
внутри.Он превращает все HtmlTextViews в интерактивные ссылки.Вот почему родительский OnClickListener
не был запущен при нажатии HtmlTextView.
Исходный код:
public void setHtml(@NonNull String html, @NonNull Html.ImageGetter imageGetter) {
final HtmlTagHandler htmlTagHandler = new HtmlTagHandler(getPaint());
htmlTagHandler.setClickableTableSpan(clickableTableSpan);
htmlTagHandler.setDrawTableLinkSpan(drawTableLinkSpan);
htmlTagHandler.setListIndentPx(indent);
html = htmlTagHandler.overrideTags(html);
if (removeTrailingWhiteSpace) {
setText(removeHtmlBottomPadding(Html.fromHtml(html, imageGetter, htmlTagHandler)));
} else {
setText(Html.fromHtml(html, imageGetter, htmlTagHandler));
}
// make links work
setMovementMethod(LocalLinkMovementMethod.getInstance());
}
Решение: htmlTextView.setMovementMethod(null);
после setHtml(..)
Или сделатьКласс Utils с методом:
public static void setHtml(HtmlTextView htmlTextView, @Nullable String text) {
htmlTextView.setHtml(text);
htmlTextView.setMovementMethod(null);
}
Ошибка на GitHub