2016-02-08 1 views
0

Основная идея того, что я хочу достичь, заключается в том, чтобы иметь возможность масштабировать содержимое в 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 - это то, что я предполагаю, является проблемой. Я был уверен, что математика была правильной, но она все еще не работает. Если у кого-то есть предложения, они были бы очень желанными.

ответ

0

Оказывается, причина, по которой мои расчеты не выходили как правильные, заключается в том, что значение t на самом деле является значением прокрутки в верхней части экрана. Следовательно, мне нужно было учитывать это при выполнении расчетов!