我正在使用Webview和本地html文件开发一个严肃的书籍应用程序。
我想让用户以他选择的相同字体大小返回他读取的最后一个位置。
问题是当我同时使用两者时。正确加载字体大小,但滚动没有发生,我看到html文件的顶部。 我试图将setInitialScale和scrollTo放在代码中的不同位置,但没有解决问题。
知道如何实施它?
也许webview有任何方法允许以其他方式进行吗?
答案 0 :(得分: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恢复它。