我想在开始时将网页视图自动滚动到某个百分比,例如页面的3/4。
问题:仅当Web视图完成渲染时,computeVerticalScrollRange才已知。我不知道(并调查:我不知道吗?),当Webview完成渲染(不加载,而是渲染所有内容)时,何时大小(computeVerticalScrollRange)将完全确定。
什么不起作用:
当computeVerticalScrollRange仍返回0时,将调用WebViewClient.onPageFinished。
当computeVerticalScrollRange仍返回0时,将调用WebChromeClient.onProgressChanged 100%。
当computeVerticalScrollRange尚未最终确定时(比第二秒小),有时会调用PictureListener.onNewPicture太早。
编辑HTML,将JavaScript处理程序放在正在调用Android类的window.onload上(使用警报),存在相同的问题:computeVerticalScrollRange有时尚未最终确定(小于一秒钟后的值)。
有没有一种方法可以从网页(滚动点)的3/4开始?
最佳答案
我实现了一个可怕的解决方案,即每隔600毫秒(在第一个PictureListener.onNewPicture之后)进行一次检查,如果computeVerticalScrollRange发生了更改。如果此内容大小在最近的600毫秒内未发生变化,则假定网页已完成加载,并进行了滚动并在屏幕上显示了Webview(使其可见)。
糟糕:即使页面只有几行,这也会以600毫秒的速度降低每个页面的加载速度。
糟糕:对于非常大的页面,600毫秒可能还不够,我的应用程序仍然无法滚动。
我仍在寻找一个好的解决方案。