簡體   English   中英

添加HTML后防止WebView滾動到頁面頂部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM