我想要实现的基本思路是能够放大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 :(得分:0)
原来我的计算结果不正确的原因是因为值t实际上是屏幕顶部的滚动值。因此,在进行计算时我需要考虑到这一点!