在我的应用中,我正在将本地HTML文件加载到webview
。如果单击了某个按钮,我想加载一个本地HTML文件并使用y axis.
问题是命令:
webview.scrollTo(0, scrollY);
在HTML文件加载完成之前,执行得太早,因此不会发生滚动。
我尝试使用Stackoverflow的很多答案(如this和this),但问题始终是一样的。我可以在调试模式下看到在文件可见之前执行的scrollTo
命令。
任何人都知道如何实现这种滚动?
在尝试了所有答案后,我发现只有以下内容真的有帮助: private final Handler mHandler = new Handler();
// in onCreate
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (mWebView.getContentHeight() > 0) {
mWebView.scrollTo(0, mLastPosition);
Log.d("scrolling", "true");
mHandler.removeCallbacks(this);
} else {
mHandler.postDelayed(this, 100);
}
}
}, 100);
此解决方案取自enter link description here
答案 0 :(得分:0)
WebViewClient会帮助你。按如下方式扩展onPageFinished():
webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
webview.scrollTo(0, scrollY);
}
});
答案 1 :(得分:0)
fisrt set custom webview client like this
webview.setWebViewClient(new CustomWebViewClient());
然后在类
中添加以下代码 private class CustomWebViewClient extends WebViewClient
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// TODO Auto-generated method stub
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
webview.scrollTo(0, scrollY);
}
}