如果您只想向下滚动到一个元素并且您可以访问正在加载的页面,在 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);
请注意,只要该 WebViewClient 加载任何页面,这将运行 javascript。如果需要,您可以轻松添加逻辑以仅调用特定页面的 javascript 滚动代码。