Достаточно безопасная / html-textview библиотека HtmlTextView перехватывает события родительского щелчка - PullRequest
0 голосов
/ 04 марта 2019

Используя эту библиотеку для отображения html-текста, я наткнулся на проблему, заключающуюся в том, что любой макет, имеющий HtmlTextView в качестве дочернего, становится недоступным для нажатия в местах, которые заняты HtmlTextView.

Вопрос: как заставить HtmlTextView перестать перехватывать события клика?

1 Ответ

0 голосов
/ 04 марта 2019

Оказалось, что 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...