簡體   English   中英

Android WebView 滾動到底部

[英]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());
        }
    }

https://chromium.googlesource.com/chromium/src.git/+/d0ef9df6be5983f6df7e4e050bbad4eb5030e7a2/android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java#362

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM