【问题标题】:Webview - setInitialScale prevent scrollTo to scroll the WebviewWebview - setInitialScale 防止 scrollTo 滚动 Webview
【发布时间】:2014-01-10 09:07:29
【问题描述】:

我正在通过将 Webview 与本地 html 文件一起使用来开发用于严肃书籍的应用程序。

我想让用户以他选择的相同字体大小返回到他上次阅读的位置。

  • 字体大小 - 当用户关闭应用程序时,我使用 getScale 存储选择的缩放比例,当用户打开应用程序时,我使用 setInitialScale 和存储的缩放比例来加载它。效果很好。
  • 位置 - 当用户关闭应用程序时,我使用 getScrollY 来存储滚动,当用户打开应用程序时,我使用带有存储滚动的 scrollTo 来加载它。效果很好。

问题是当我同时使用两者时。正确加载了字体大小,但没有发生滚动,我看到了 html 文件的顶部。 我尝试将 setInitialScale 和 scrollTo 放在代码中的不同位置,但没有解决问题。

知道如何实现它吗?

也许 webview 有任何方法允许以其他方式进行操作?

【问题讨论】:

    标签: android webview scroll scale


    【解决方案1】:

    您可能遇到了某种竞赛 - 在 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 恢复它。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      相关资源
      最近更新 更多