Основная идея того, что я хочу достичь, заключается в том, чтобы иметь возможность масштабировать содержимое в WebView, но ограничивать прокрутку, чтобы контент не показывал некоторые дополнения, расположенные вверху и снизу при увеличении. Я знаю высоту прокладки, о которой идет речь.Масштабирование WebView с ограничением прокрутки
В настоящее время я расширил класс WebView и переопределил onScrollChanged
, чтобы получить информацию о том, когда мы прокручиваем и как далеко. Это все достаточно просто и отлично работает (т. Е. Я получаю информацию, которая мне нужна).
Проблема возникает при попытке ограничить прокрутку. Я могу правильно ограничить его, чтобы верхняя прокладка никогда не была видна, но по какой-то причине я не могу понять, что дно просто не будет ограничиваться правильно.
Вот код, который я в настоящее время в onScrollChanged
:
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
float totalPadding = 250 * scaleFactor;
float padding = totalPadding/2;
float paddingTopStart = padding;
float paddingBottomStart = (contentHeight * scaleFactor) + paddingTopStart;
if (t > paddingBottomStart) {
setScrollY((int) paddingBottomStart);
} else if (t < paddingTopStart) {
setScrollY((int) paddingTopStart);
}
}
масштабный коэффициент получается в onScaleChanged и сохраняется в качестве переменной класса. totalPadding
- общее количество отступов (заполнение вверху + дополнение внизу). Отступы равны с обеих сторон, поэтому padding = totalPadding/2
.
paddingBottomStart
- это то, что я предполагаю, является проблемой. Я был уверен, что математика была правильной, но она все еще не работает. Если у кого-то есть предложения, они были бы очень желанными.