gpt4 book ai didi

Android WebView 获取内容高度()不返回正确的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:04 26 4
gpt4 key购买 nike

我有一个要求,我在其中显示一个 WebView,其下方有一个复选框。该复选框最初处于禁用状态。只有当用户向下滚动到 webview 的底部时,复选框才会被启用。我通过扩展 Webview 类并编写我的 onScrollChanged 监听器来实现这一点,如下所示:

@Override
protected void onScrollChanged(int left, int top, int oldLeft, int oldTop) {
if ( (getContentHeight() - (top + getHeight())) <= mMinDistance )
{
Log.i("MYACT","content height: "+getContentHeight()+" top: "+top+" Height: "+getHeight()+" minDistance: "+mMinDistance);
Log.i("MYACT", "Reached bottom");
mOnBottomReachedListener.onBottomReached(this);
}
else{
Log.i("MYACT","content height: "+getContentHeight()+" top: "+top+" Height: "+getHeight()+" minDistance: "+mMinDistance);
Log.i("MYACT", "Not at bottom");
mOnBottomReachedListener.onNotAtBottom(this);
}
super.onScrollChanged(left, top, oldLeft, oldTop);
}

问题是条件

(getContentHeight() - (top + getHeight())) <= mMinDistance) //mMinDistance is 0 in my case

甚至在我向下滚动到页面底部之前就已经很满意了。如您所见,我尝试在日志中打印每个值,发现参数"top" 有时会超过值"getContentHeight"

示例日志值:

08-14 11:28:19.401: I/MYACT(1075): content height: 3020 top: 3861 Height: 416 minDistance: 0

在这种情况下我怎样才能避免这种情况?我应该使用不同的方式来检查我是否已经向下滚动到页面底部吗?

谢谢

最佳答案

经过一些研究,我发现了这个问题。 Webview 通常会根据屏幕尺寸对网页进行缩放,然后进行渲染。它通常会缩放页面,使其在手机中看起来不会太小。您可以使用 getScale()

方法获取此比例因子

因此,在我的例子中,我会使用以下条件来检查是否已到达页面末尾

(getContentHeight()*getScale() - (top + getHeight())) <= mMinDistance) //mMinDistance is 0 in my case

关于Android WebView 获取内容高度()不返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com