我有一个需求,需要显示一个带有复选框的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在我的情况下是0```
甚至在我滚动到页面底部之前就已经满足了。正如你看到的,我尝试在日志中打印每个值,并发现参数"top"有时会超过值"getContentHeight"。
样本日志值:
```08-14 11:28:19.401: I/MYACT(1075): content height: 3020 top: 3861 Height: 416 minDistance: 0```
在这种情况下,我该如何避免这种情况?我应该使用不同的方法来检查是否已经滚动到页面底部吗?
谢谢。
view.loadUrl("javascript:" + js)
在页面上调用js,并通过向设置添加javascript接口来读取结果。无需修改网站。 - movAX13h