[英]Prevent WebView from scrolling to top of page after HTML is added
我正在编写一个使用WebView来显示内容的Android应用。 该应用程序的主要目的是显示文本供用户阅读。
我正在通过JavaScript将HTML动态添加到WebView中。 将内容添加到页面底部时,这不是问题。 将内容添加到顶部时,WebView会自动滚动到顶部。 那是我的问题。
我需要尝试找到一种方法,以防止在将内容添加到顶部时,WebView自动滚动到页面顶部。
我确实有一些限制:
1)我正在使用JavaScript,但是无法使用jQuery。
2)我目前仅限于Android API 8(v2.2)。
3)我不想只是滚动回到我的原始位置。 (我已经找到了许多针对此问题的解决方案,在这些解决方案中,我只是以编程方式滚动回到滚动之前的位置。我对此有一个当前的实现,但是过渡不够平稳。)
4)我需要允许用户在添加内容时不断向上滚动。 (虽然我可以禁用滚动以防止WebView自身向上滚动,但我需要允许用户在向其上方添加屏幕高度左右的内容时继续向上滚动。)
抱歉,这似乎有限,但您可以明白为什么我需要一些建议。
提前谢谢了。
我找到了解决问题的方法。 如果有人有另一个答案,尤其是更直接的答案,我仍然会感兴趣。
我在某种程度上误诊了我的问题。 当我使用以下方法添加HTML时: document.body.insertBefore(newDiv, topDiv.nextSibling);
,我在文档顶部下方添加了新的HTML。
我以为我是向上滚动到屏幕顶部(坐标[0,0]),但是文档长度在变化,并且我当前的Y位置保持不变。 因此,我正在查看的坐标是恒定的,但是这些坐标显示的HTML发生了变化。 效果是“向上滚动”页面。
我最终在可见文本上方添加了一个巨大的空白区域。 每次我添加HTML时,它都会收缩所添加HTML的确切高度。 这样可以抵消添加的文本,使我的可见屏幕保持原样。 这意味着没有滚动,这是一个更流体UI。
这提供了完全不同的设置方法,例如阻止用户滚动我的空白区域的整个长度,并确保我的WebView不会超过最大尺寸。 但是,随着用户体验的大幅度改善,这种权衡是值得的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.