2014-01-10 60 views
0

我正在通过使用Webview和本地html文件开发应用程序的严重书籍。Webview - setInitialScale防止scrollTo滚动Webview

我想允许用户返回到他选择的相同字体大小阅读的最后一个位置。

  • 字体大小 - 我用的getScale存储选择缩放,当用户关闭该应用程序,而当用户使用setInitialScale与存储的缩放打开我加载它的应用程序。它运作良好。
  • 位置 - 当用户关闭应用程序时,我使用getScrollY来存储滚动,当用户打开应用程序时,我使用scrollTo和存储的滚动来加载它。它运作良好。

问题是当我使用两者。字体大小正确加载,但滚动不发生,我看到HTML文件的顶部。 我试图把setInitialScale和scrollTo放在代码中的不同位置,但没有任何办法解决这个问题。

任何想法如何实现它?

也许webview有任何方法,允许以其他方式做呢?

回答

0

您可能正在进行某种比赛 - 您无法在WebView完成加载之前调用scrollTo并且已通过布局传递。

一种方法是将覆盖WebView.onSizeChanged和等待的WebView来调整到“正确”的高度滚动前:

@Override 
void onSizeChanged(int w, int h, int ow, int oh) { 
    super.onSizeChanged(w, h, ow, oh); 
    if (h >= savedScrollOffset) 
     scrollBy(0, savedScrollOffset); 
} 

另一种选择,如果你控制了HTML和使用JavaScript,将保存并使用JavaScript恢复滚动偏移量。您可以使用LocalStorage保存滚动偏移量,然后在加载页面时从LocalStorage恢复它。