我尝试向下滚动WebView中的页面。因此我找到了函数.pageDown(true)
。问题是这个功能对我来说并不适用。大多数情况下它没有做任何事情。
Codesnippet:
wvChat.loadData(chat_, "text/html; charset=utf-8", "UTF-8");
wvChat.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
wvChat.pageDown(true);
}
});
是否有其他方法或在onPageFinished中使用它是错误的?
答案 0 :(得分:6)
获取html内容高度并使用scrollTo(x,y)
wvChat.loadData(chat_, "text/html; charset=utf-8", "UTF-8");
wvChat.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//use the param "view", and call getContentHeight in scrollTo
view.scrollTo(0, view.getContentHeight());
}
});
答案 1 :(得分:2)
我有一个使用scrollTo函数向下滚动大文件(多行)的解决方案。我设置的值远远高于内容高度。
mWebView.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
Handler lHandler = new Handler();
lHandler.postDelayed(new Runnable()
{
@Override
public void run()
{
mWebView.scrollTo(0, 1000000000);
}
}, 200);
}
});
现在的问题是,它不适用于小文件(少行),因为onPageFinished方法在WebView渲染之前被调用,所以我必须使用延迟句柄。
答案 2 :(得分:0)
您可以使用Javascript滚动WebView
:
private fun scrollMove(contentHeight: Float) {
val speed = (contentHeight / 100) * 1000
currentWebView?.evaluateJavascript("\$('html,body').animate({scrollTop:$contentHeight},$speed);", null)
}
答案 3 :(得分:0)
我认为这是滚动到底部的最佳解决方案
public void scrollToBottom(boolean animate) {
if (animate) {
pageDown(true);
} else {
scrollTo(getScrollX(), computeVerticalScrollRange());
}
}
答案 4 :(得分:-1)
pandoc
这更好,毫不拖延......