android - Android webview pull to refresh问题与引导模式
问题描述
我对使用 webview 的 android 应用程序有疑问。我已将 webview 包裹在 swiperefreshlayout 中:
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
当刷新被触发时,webview 被重新加载。这对我来说大部分时间都很完美。我遇到的问题是当网页滚动到顶部时,打开了一个高于 webview 的模式。在模态中向下滚动时一切正常,但是在尝试向上滚动时会发生问题。拖动刷新被触发。据我所知,这是因为模态后面的网页滚动到顶部,它认为它应该刷新。
有谁知道如何解决这个问题?
解决方案
当 webview 滚动 Y 不为 0 时,您需要禁用拉动刷新。请检查以下代码:
pullToRefresh.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (webView.getScrollY() == 0)
pullToRefresh.setEnabled(true);
else
pullToRefresh.setEnabled(false);
}
});
使用它,您在 webview 中滚动到顶部时不会看到问题。
推荐阅读
- hibernate - 给定另一个表中的朋友关系,从 Hibernate 获取对象列表
- r - 当该行的行号等于R中具有重复项的另一列的值时,如何选择一行?
- mocha.js - WebdriverIO - 使用规范报告器编辑测试标题或属性
- javascript - 使用 useEffect 和 useState 在 React JS 中出现无限循环错误
- java - 如何使用android studio从4层父节点firebase获取子数据
- core-data - SwiftUI 中的@FetchRequest
- ffmpeg - 如何从 ffmpeg 流式传输到多个 udp 客户端?
- java - Java Math.sqrt 函数向下舍入为零
- go - 查找特定类型的所有函数
- transactions - 如果在插入 memtable 时发生崩溃,leveldb 是否仍能保持事务性?