[英]Android WebView scroll to bottom
我嘗試向下滾動 WebView 中的頁面。 因此我找到了函數.pageDown(true)
。 問題是這個功能對我不起作用。 大多數情況下它什么都不做。
代碼片段:
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中使用它是錯誤的?
獲取 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());
}
});
我有一個使用 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 呈現之前調用的,所以我必須使用延遲句柄。
wvChat.setWebViewClient(new WebViewClient() {
@Override
public void onPageCommitVisible(WebView view, String url) {
wvChat.pageDown(true);
}
});
這更好,毫不拖延......
您可以使用 Javascript 滾動WebView
:
private fun scrollMove(contentHeight: Float) {
val speed = (contentHeight / 100) * 1000
currentWebView?.evaluateJavascript("\$('html,body').animate({scrollTop:$contentHeight},$speed);", null)
}
我認為這是滾動到底部的最佳解決方案
public void scrollToBottom(boolean animate) {
if (animate) {
pageDown(true);
} else {
scrollTo(getScrollX(), computeVerticalScrollRange());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.