У меня есть страница, включая WebView. У меня был android:configChanges="...|orientation|screenSize"
в манифесте и работал отлично: я просматриваю вид на определенный текст, а при изменении ориентации экрана WebView позиционируется в тот же текст сверху (это не то же самое, что сохранение ScrollY, потому что измененных ширина).Сохранять сдвиг текста WebView при изменении ориентации
Теперь я изменил дизайн и имел разные макеты для горизонтальной и вертикальной ориентации. Я предпочитаю удалить 'orientation | screenSize' для активности, позволяющей восстановить страницу при изменении ориентации. Все работает отлично, но мне нужно восстановить текст смещения вручную.
Ближайший я смог найти getOffsetForPosition(getScrollX(), getScrollY())
для сохранения смещения и bringPointIntoView(offset)
для восстановления смещения, однако эти функции не являются обратной совместимостью: (!) getOffsetForPosition хочет API 3+, в то время как bringPointIntoView требует API 14+. Кроме того, они применяются к TextView и могут быть неточными с помощью WebView из-за HTML-тегов.
Пробные WebView.saveState
и WebView.restoreState
(после загрузки страницы). Кажется, не работает для меня.
Да, я могу получить расчетное положение прокрутки с помощью Paint и FontMetrics, но это «грязный трюк». В идеале я предпочитаю получать все параметры из системы и поддерживать код как можно более обратной совместимости.