Android 动态滚动WebView

Android 动态滚动WebView,android,web-widget,Android,Web Widget,我想在页面左上角自动将WebView滚动到我的一个Html标题,标题id=my_。当我的片段被加载时,怎么做 WebView myWebView = (WebView) v.findViewById(R.id.web_view); myWebView.setWebViewClient(new WebViewClient()); myWebView.getSettings().setSupportZoom(true); myWebView.getSettings().setUseWideViewP

我想在页面左上角自动将WebView滚动到我的一个Html标题,标题id=my_。当我的片段被加载时,怎么做

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);

如果您只想向下滚动到某个元素,并且您可以访问正在加载的页面,在javascript中,您可以在页面加载时执行以下操作:

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

container.scrollTop(
    scrollTo.offset().top - container.offset().top + container.scrollTop()
);
见这个问题:

如果您不希望修改底层资源,则可以将以下Java代码添加到WebView,一旦加载页面,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);

请注意,每当WebViewClient加载任何页面时,都将运行javascript。如果需要,您可以轻松添加逻辑,只调用特定页面的javascript滚动代码。

这不是javascript问题。。。如果解决方案是运行一些javascript,那么您应该包括如何根据问题使用WebView注入/运行javascript。我的假设是他们有权修改页面,即向页面添加javascript。我已经更新了我的答案,指明了在任何页面上加载javascript后如何运行javascript。通常,如果你想滚动到一个id,你可以将我的_头附加到url的末尾。试试看,看是否有效。例如: