Есть ли прослушиватель, когда WebView отображает его содержимое? - PullRequest
40 голосов
/ 01 ноября 2010

Используя WebViewClient и / или WebChromeClient, вы можете получить прослушиватель, когда страница загружена, однако иногда это вызывается до того, как в WebView есть какой-либо контент, прежде чем он что-либо отобразит.

Каким будет эффективный метод определения того, когда WebView отображает свой контент?

Редактировать: (Пытаясь быть более ясным)

Когда я загружаю страницу в WebView, я хочу установить прокрутку на определенную позицию. Кажется, что положение прокрутки нельзя установить до тех пор, пока страница не будет загружена и у нее не будет фактической высоты содержимого. Итак, я попробовал два разных подхода к определению, когда страница закончила загрузку, onPageFinished () из WebViewClient и также onProgressChanged () из WebChromeClient. Оба из них говорят мне, когда страница закончила загрузку.

Однако проблема в том, что иногда он вызывается до отображения страницы, и поэтому страница не имеет высоты, а вызов прокрутки ничего не делает.

Я пытаюсь найти надежный способ определить, когда страница готова к прокрутке, т.е. когда он имеет высоту содержимого.

Я полагаю, я мог бы настроить цикл проверки после того, как он закончил загрузку, чтобы продолжать искать, когда высота доступна, но это выглядело как хак. Надеюсь, что есть более чистый путь.

Ответы [ 11 ]

0 голосов
/ 01 ноября 2010
onLoadResource(WebView view, String url)

Сообщите хост-приложению, что WebView загрузит ресурс, указанный в указанном URL.

По-прежнему не ясно, какова цель, но вы можете попробовать

public void doUpdateVisitedHistory (WebView view, String url, boolean isReload)

Я бы "предположил", что страница завершила загрузку, прежде чем она будет добавлена ​​в историю ...

...