WebView使用滚动限制进行缩放

时间:2016-02-08 20:03:57

标签: android scroll android-webview zoom

我想要实现的基本思路是能够放大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是我认为的问题。我确信所涉及的数学是正确的,但它仍然不起作用。如果有人有任何建议,他们将非常欢迎。

1 个答案:

答案 0 :(得分:0)

原来我的计算结果不正确的原因是因为值t实际上是屏幕顶部的滚动值。因此,在进行计算时我需要考虑到这一点!