android webview.scrollTo无效

android webview.scrollTo无效,第1张

概述我在onPageFinished函数中调用webview.scrollTo,但它没有做任何事情. public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); 我在onPageFinished函数中调用webvIEw.scrollTo,但它没有做任何事情.

public voID onPageFinished(WebVIEw vIEw,String url)     {        // Todo auto-generated method stub        super.onPageFinished(vIEw,url);        webvIEw.scrollTo(0,scrollY);    }

知道为什么吗?
完成加载后如何自动滚动页面?

解决方法 在我看来,在onPageFinished,onProgressChanged,WebVIEw.scrollTo的完成和网页的显示(实际绘制到屏幕)之间存在竞争条件.

显示页面后,WebVIEw“认为”它已滚动到您的滚动位置.

要进行测试,您可以验证WebVIEw.getScrollY()是否返回了您想要的内容,但页面的显示不在该位置.

要解决此问题,以下是在页面显示后立即滚动到Y的非确定性方法:

...    webVIEw = (WebVIEw) vIEw.findVIEwByID(R.ID.web_vIEw_ID);    webVIEw.loadData( HTMLTodisplay,"text/HTML; charset=UTF-8",null);    ...    webVIEw.setWebVIEwClIEnt( new WebVIEwClIEnt()     { ... } );    webVIEw.setWebChromeClIEnt(new WebChromeClIEnt()     {        ...        @OverrIDe        public voID onProgressChanged(WebVIEw vIEw,int progress) {            ...            if ( vIEw.getProgress()==100) {                // I save Y w/in Bundle so orIEntation changes [in addition to                // initial loads] will reposition to last location                jumpToY( savedYLocation );            }        }     } );    ...  private voID jumpToY ( int yLocation ) {      webVIEw.postDelayed( new Runnable () {          @OverrIDe          public voID run() {              webVIEw.scrollTo(0,yLocation);          }      },300);  }

300 ms的最终参数似乎允许系统在调用jumpToY之前“追赶”.根据运行的平台,您可能会使用该值.

希望这可以帮助

-麦克风

总结

以上是内存溢出为你收集整理的android webview.scrollTo无效全部内容,希望文章能够帮你解决android webview.scrollTo无效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1122218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存