【问题标题】:Restore webview state after webview.reload method call. Is it possible?调用 webview.reload 方法后恢复 webview 状态。可能吗?
【发布时间】:2019-05-10 12:03:42
【问题描述】:

每当我在 webview 中重新加载网页时,它都会转到页面顶部。 有什么办法可以在自动重新加载后不转到页面顶部并再次滚动?

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    你不能以正确的方式做到这一点,你可以通过使用 scrollTo 方法指出一些位置来实现它。但是在自动加载之后,你会是顶级的,那么只有你可以使用 scrollTo 方法。

    【讨论】:

      【解决方案2】:

      如果你有用户向下滚动的数量,你可以使用这样的东西。加载后将向下滚动到 mWebView.scrollTo(0, 1000000000); 的选定值

      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);
        } 
      });
      

      【讨论】:

        【解决方案3】:

        您可以通过与您的网络开发人员协调来实现此目的。

        在 JavaScript 的帮助下,您可以将参数传递给在 WebView 中加载的网页。而且您的 Web 开发人员可以轻松地滚动他们的 HTML 页面。

        调用 JavaScript 方法,

        view.loadUrl("javascript:WEB_YOURMETHOD();");
        

        您需要在加载时在 URL 中嵌入 JavaScript 方法。

        Reference

        【讨论】:

          【解决方案4】:

          解决了一些建议。 //在onPageFinished中

          x = (int) scrollview.getScaleX();
          y = (int) scrollview.getScaleY();
          

          在你想要的地方定义你的 x,y 值

          wv.reload();
          wv.scrollTo(x,y);
          

          你想要的地方

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-20
            • 2011-07-23
            • 2013-08-31
            • 1970-01-01
            • 1970-01-01
            • 2010-12-13
            相关资源
            最近更新 更多