Прокрутите WebView динамически

Я хочу, чтобы однажды страница автоматически прокрутила WebView до одного из моих заголовков в Html с id = "my_header" в верхнем левом углу. Как это сделать, когда мой фрагмент загружен?

WebView myWebView = (WebView) v.findViewById(R.id.web_view);
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.loadUrl(resource);

1 ответ

Если вы просто хотите прокрутить вниз до элемента и у вас есть доступ к загружаемой странице в javascript, вы можете сделать что-то подобное при загрузке страницы:

var container = $('div'),
    scrollTo = $('#my_header');

container.scrollTop(
    scrollTo.offset().top - container.offset().top + container.scrollTop()
);

Смотрите этот вопрос: Как прокрутить до определенного элемента с помощью jQuery?

Если вы не хотите изменять базовый ресурс, вы можете добавить следующий код Java в WebView, который будет вызывать вышеуказанный код JavaScript после загрузки страницы:

WebView myWebView = (WebView)v.findViewById(R.id.web_view);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageFinished(WebView view, String url) {
      String javascript = "javascript:"
          + "var container = $('div'),scrollTo = $('#my_header');"
          + "container.scrollTop(scrollTo.offset().top - container.offset().top + container.scrollTop());";
      view.loadUrl(javascript);
    }
});

// Finally, load the page
myWebView.loadUrl(resource);

Обратите внимание, что это будет запускать JavaScript, когда какая-либо страница загружается этим WebViewClient. Вы можете легко добавить логику, чтобы вызывать код прокрутки JavaScript только для конкретной страницы, если это необходимо.

Другие вопросы по тегам