我希望一旦页面自动滚动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);
答案 0 :(得分:0)
如果您只想向下滚动到一个元素,并且您可以访问要加载的页面,那么在javascript中,您可以在页面加载时执行以下操作:
var container = $('div'),
scrollTo = $('#my_header');
container.scrollTop(
scrollTo.offset().top - container.offset().top + container.scrollTop()
);
看到这个问题: How to scroll to specific item using 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滚动代码。