SwipeRefreshLayout 内的 Horizo​​ntalScrollView

2023-12-06

我实施了新的SwipeRefreshLayout我的应用程序中的组件,它适用于任何垂直视图,例如ListView, GridView and ScrollView.

它在水平视图中表现非常糟糕,例如HorizontalScrollView。 当向右或向左滚动时,SwipeRefreshLayout视图缓存触摸,防止HorizontalScrollView从接收到它并开始垂直滚动以执行刷新。

我尝试解决这个问题,就像我之前解决垂直问题一样ScrollView with ViewPager里面,使用requestDisallowInterceptTouchEvent但没有成功。我还注意到这个方法在原始版本中被重写了SwipeRefreshLayout类不返回超级。谷歌的开发者留下了评论“//Nope." :)

Because SwipeRefreshLayout组件相对较新,我找不到解决水平滚动问题的解决方案,同时仍然允许滑动刷新视图来跟踪和处理垂直滚动,所以我想我会分享我的解决方案,希望它能为某人节省一个小时或二。


我通过扩展解决了这个问题SwipeRefreshLayout并覆盖其onInterceptTouchEvent。在内部,我计算用户移动的 X 距离是否大于触摸斜率。如果是这样,则意味着用户正在水平滑动,因此我返回false这让孩子看到(HorizontalScrollView在本例中)来获取触摸事件。


public class CustomSwipeToRefresh extends SwipeRefreshLayout {

    private int mTouchSlop;
    private float mPrevX;

    public CustomSwipeToRefresh(Context context, AttributeSet attrs) {
        super(context, attrs);

        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mPrevX = MotionEvent.obtain(event).getX();
                break;

            case MotionEvent.ACTION_MOVE:
                final float eventX = event.getX();
                float xDiff = Math.abs(eventX - mPrevX);

                if (xDiff > mTouchSlop) {
                    return false;
                }
        }

        return super.onInterceptTouchEvent(event);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwipeRefreshLayout 内的 Horizo​​ntalScrollView 的相关文章

  • 如何做Android - 滑动抽屉从左到右滑动..?

    如何将android滑动抽屉从LTR滑动 使用时android orientation horizontal 它从 RTL 滑出 我该如何进行 LTR 谢谢 我找到了答案表格 Here http blog sephiroth it 2011
  • 在 Android 上通话结束时启动活动

    我想在通话结束时启动一项活动 找不到任何对此的参考 我该怎么做 我还没有尝试过这个 但我假设你可以运行一些服务 始终在后台运行 它利用电话状态监听器 http developer android com reference android
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • fetchUuidsWithSdp 的奇怪 UUID 逆转

    我有一个在树莓派上运行的 python 蓝牙服务器 使用 PyBluez 我在服务器中使用的uuid是 8f86d132 4ab8 4c15 b8df 0b70cf10ea56 我正在打电话device fetchUuidsWithSdp
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • WorkManager 或 AlarmManager 用于日常请求然后通知工作?

    这是用例 用户设置具有特定时间的每日通知 在指定时间 发出网络请求以获取一些数据 然后使用检索到的数据显示通知 我不确定是否应该使用 AlarmManager 还是 WorkManager 来实现这个用例 据我了解 AlarmManager
  • Dagger 2 没有生成我的组件类

    我正在使用 Dagger 2 创建我的依赖注入 几个小时前它还在工作 但现在不再生成组件 这是我创建组件的地方 public class App extends Application CacheComponent mCacheCompon
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始

随机推荐

  • 网页宽度不是 100%

    我有一个一页网站 我的问题是 在右侧 大约有 15 像素的边距 我的 body 和 div 的宽度设置为 100 我还必须在页面底部稍微滚动 此问题与所有屏幕尺寸相关 我怎样才能解决这个问题 我不确定要突出显示哪些 css 和 html 代
  • 适用于 ios 的 Spotify API:从 ios spotify api 下载、保存、访问曲目

    我想知道是否可以使用Spotify ios api CocoaLibSpotify IOS 库 将曲目下载到iphone ipod ipad 设备 如果是这样 我还需要访问它们并随时玩 稍后我将在我的应用程序中使用它们 我认为我们可以使用
  • 将 HTML 实体转换为 Unicode,反之亦然

    如何在 Python 中将 HTML 实体转换为 Unicode 反之亦然 至于 反之亦然 我需要自己 导致我找到这个问题 这没有帮助 随后另一个有答案的网站 u some string encode ascii xmlcharrefrep
  • 单击按钮时执行服务器端 shell 脚本

    我正在尝试执行驻留在我的服务器中的 shell 脚本 我需要在执行后获取此 shell 脚本的 字符串 结果 但是 只有当我的 ReactJS 应用程序中的某个按钮被按下时 才应该触发此脚本 我花了相当多的时间寻找答案 到目前为止 所有答案
  • R 中的固定效应:plm 与 lm + Factor()

    我正在尝试在 R 中运行固定效应回归模型 我想控制变量 C 和 D 中的异质性 都不是时间变量 我尝试了以下两种方法 1 使用plm包 给我以下错误消息 formula Y A B C D reg plm formula data data
  • Oracle SQL Loader 中的映射字段

    使用 Oracle SQL Loader 加载外部 csv 时 有没有办法将控制文件中的字段直接相互映射 目前我正在进行简单的加载 因此源字段的位置很重要 有没有办法做到这一点 所以而不是 load data into table1 fie
  • 了解配置等待

    试图了解何时应该使用ConfigureAwait 据书上记载 When an async方法在等待后恢复 默认情况下它将在相同的上下文中恢复执行 如果该上下文是 UI 上下文并且大量异步方法在 UI 上下文上恢复 这可能会导致性能问题 So
  • JavaFX 2.0 使用事件处理程序加载 fxml 文件失败

    我试图从子文件夹加载 fxml 但失败了 我有制作替换场景内容的行 private Parent replaceSceneContent String fxml throws Exception Parent page Parent FXM
  • OpenGL是一个“状态机”吗?

    OpenGL 通常被描述为 状态机 因为据我所知 它由可以通过其 API 设置的全局变量组成 并且它们更改 定义其行为 例如 可以设置当前颜色或变换矩阵 许多状态变量具有连续的值范围 然而 据我了解 计算机科学中的 状态机 或 有限状态机
  • 跨域 AJAX 请求未设置 Cookie

    我正在我的页面上加载 JavaScripthttp vista local 该脚本向 Web 服务发送 POST 请求http api vista local sessions设置 cookie 是在响应中设置的 Accept Ranges
  • C# 秒表即时更新

    我的第一个问题在这里 你好 我是 c 的初学者 我尝试构建一个简单的计时器 在 Windows Forms 中 我制作了一个指示时间的标签 并使用了 StopWatch 类 来自 system diagnostics 启动 停止秒表的触发事
  • 如何在Android中有效地实时操作YUV相机帧?

    我在从 Android 获取的 NV21 框架的感兴趣区域 中心 周围添加黑色 0 填充CameraPreview线程中的回调 为了避免转换为 RGB 位图和反向的开销 我尝试直接操作 NV21 字节数组 但这涉及嵌套循环 这也会使预览 处
  • 通过 Selenium chromedriver 进行 Python 代理身份验证

    我们尝试了几天在 Python 中使用 selenium chromedriver 设置代理身份验证 我们无法设置 ip 因为 Chrome 会弹出一个身份验证弹出窗口 问题是硒无法切换到该窗口 因此无法输入 对我们有用的唯一解决方案是使用
  • Scala 中如何序列化函数?

    我正在尝试 akka 持久性 并遇到了对象序列化的典型问题 我的对象 如下所示 具有基本类型和功能 我读this this and this 但没有人帮助我使以下内容可序列化 测试工具 object SerializationUtil de
  • 不处理 MemoryStream / StringReader 可以吗?

    我想创建一个返回 XmlReader 的方法 根据具体情况 XmlReader 可能会被提供不同类型的流 要么是 StringReader 要么是 MemoryStream 通常我会使用 using 块来处理 StringReader 或
  • 正则表达式未使用 Unicode 字符范围

    NOTE 又被问到一个问题模式中带有 Uxxxxxxxx 字符的 C 正则表达式已经 这个问题的不同之处在于它不是关于如何计算代理对 而是关于如何在正则表达式中表达高于 0 的 unicode 平面 从我的问题中应该可以清楚地看出 我已经理
  • 如何在ListView中创建可点击的链接?

    我正在尝试使 URL 在 ListView 项目内可单击 我该怎么做呢 我希望它的工作方式是用户以纯文本形式存储链接 然后当我检索链接时 我想让它们在 ListView 中可单击 这是我在 read GetString 2 提取 URL 值
  • Node.js MySQL 插入问题[重复]

    这个问题在这里已经有答案了 考虑 exports adduser function connection return function req res Get form values var username req body usern
  • 如何将字符串的一部分转换为斜体?

    我要实现animal getScientificName如斜体 代码如下 我正在使用列表视图并在列表视图中设置文本 我不仅希望文本视图的一部分显示为斜体 无论如何我可以做到这一点 我附上了下面的部分代码 感谢您的帮助 String list
  • SwipeRefreshLayout 内的 Horizo​​ntalScrollView

    我实施了新的SwipeRefreshLayout我的应用程序中的组件 它适用于任何垂直视图 例如ListView GridView and ScrollView 它在水平视图中表现非常糟糕 例如HorizontalScrollView 当向