ViewPager 内的 ScrollView:滑动不起作用

2023-12-15

我有包含三个片段的 ViewPager,其中之一是内部带有 ScrollView 的 FrameLayout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/table"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"/>
    </ScrollView>

    <Button
        android:id="@+id/buttonRemove"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_button_red"
        android:layout_gravity="bottom"
        android:layout_margin="4dp"
        android:text="@string/button_remove_last_round"
        android:textColor="#ffffff"
        android:textSize="24sp"/>


</FrameLayout>

如果我滑过按钮,它就会起作用。但是如果我在 ScrollView 上滑动,它不起作用,只能向上/向下滚动

编辑:我尝试覆盖 Scrollview 的 OnTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent ev) {

    switch (ev.getAction()){
        case MotionEvent.ACTION_DOWN:
            touchX = ev.getX();
            touchY = ev.getY();
            return super.onTouchEvent(ev);//if I change it to 'break', then only swipe works, but no scroll
        case MotionEvent.ACTION_MOVE:
            if(Math.abs(touchX-ev.getX())<40){
                return super.onTouchEvent(ev);//Scroll works perfectly
            }else{
                return false;//Scroll disabled, but swipe still not working
            }
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            touchX=0;
            touchY=0;
            break;
    }
    return false;
}

现在我可以禁用滚动,但滑动仍然不起作用,如果X点之间的差异超过40,我将事件传递给viewpager,但viewpager的onTouchListener没有收到此事件;


好的,我在@yedidyak 的帮助下找到了解决方案。我写了我的自定义 ScrollView:

public class CustomScrollView extends ScrollView {

float touchX = 0;
float touchY = 0;

ViewPager parentPager;

public void setParentPager(ViewPager parentPager) {
    this.parentPager = parentPager;
}

public CustomScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomScrollView(Context context) {
    super(context);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {

    switch (ev.getActionMasked()){
        case MotionEvent.ACTION_DOWN:
            touchX = ev.getX();
            touchY = ev.getY();
            return super.onTouchEvent(ev);
        case MotionEvent.ACTION_MOVE:
            if(Math.abs(touchX-ev.getX())<40){
                return super.onTouchEvent(ev);
            }else{
                if (parentPager==null) {
                    return false;
                } else {
                    return parentPager.onTouchEvent(ev);
                }
            }
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            touchX=0;
            touchY=0;
            break;
    }
    return super.onTouchEvent(ev);
}
}

然后在片段中我将 viewpager 放置到这个视图中,它工作得很好

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

ViewPager 内的 ScrollView:滑动不起作用 的相关文章

  • Android:处理电话中的语音

    我目前正在寻找有关如何在 Android 上操作音频的选项 目标是在通话期间实时处理来自麦克风的音频 最好的解决方案是在本机调用中执行此操作 但重建一个电话应用程序 无 VOIP 也可以 有没有什么方法可以使用 Android API 来实
  • Android 滚动分页

    Android 操作系统有可以实现滚动分页的功能吗 Edit滚动分页是指像主屏幕上一样的分页 您可以左右滑动并转到下一页或上一页 您可以在 android git kernel org 上查看 Launcher 的源代码作为示例 查找名为
  • 有没有办法有一个屏蔽数字输入字段?

    我正在 Android 上创建一个 HTML5 应用程序 对于这个特定场景 我们有一个用于信用卡安全代码的输入字段 我们希望强制输入字段仅包含数字并被屏蔽 我没有运气搜索这个特定的案例 从我自己研究 尝试中可以看出 这不能纯粹通过 HTML
  • 使用 iOS 分布式应用程序时 Google Cloud Messaging 显示“notRegistered”

    我在 iOS 应用程序上实现了 GCM 服务 我使用 PHP 在服务器上发送 GCM 当应用程序由开发配置文件签名时 它可以完美运行 也就是说 当应用程序使用 GCM 配置注册自身时 它始终返回一个正常运行的设备令牌 我可以使用令牌向设备发
  • 如何使用 ArrayAdapter

    ArrayList
  • Kotlin 数据类中的函数作为参数会导致解析错误

    我有一个 Kotlin 帽子中的数据类正在使用 Parcelize注释以方便分割 问题是我现在想将一个函数传递给此类 但我真的不知道如何使该函数在打包过程中不被考虑 这是我的数据类 Parcelize data class GearCate
  • 仅允许使用 -Xjvm-default 选项从具有“@JvmDefault”成员的接口继承

    我在Android studio上更新了kotlin版本 ext kotlin version 1 6 10 不幸的是我收到构建错误 仅允许使用 Xjvm default 选项从具有 JvmDefault 成员的接口继承 我怎样才能解决这个
  • Android HTTP-post AsyncHttpClient

    public void postLoginData AsyncHttpClient myClient new AsyncHttpClient RequestParams params1 new RequestParams params1 p
  • 为什么 Cursor.requery() 被标记为“已弃用”?

    Cursor requery 是一种非常常见的方法 使用它来刷新 ListView 的内容 但为什么这个方法被标记为 已弃用 呢 我不太清楚 API 文档上的原因 Cursor requery API http developer andr
  • XmlPullParser 异常 - 无法解决

    我有一个基本方法 ReadXML 从资产文件夹中读取 xml 文件 运行时不会引发任何异常 但在这个方法中 我调用了 doXML 方法 该方法尝试从 xml 文件中提取文本并将该文本设置到文本视图中 当 doXML 方法运行时 我不断收到以
  • Gradle 构建无法解析生成的类

    我刚刚将 Android Studio 从 1 5 更新到 2 2 1 Gradle 也是如此 我有一个项目 它使用注释处理器框架 由我制作 来执行类似 Dagger 的依赖注入 这在更新之前工作得很好 但现在 Gradle 无法解析生成的
  • 尝试使用 Facebook ID 获取 Facebook 图像时获取空位图

    这是我正在使用的代码 String imageURL Bitmap bitmap null imageURL http graph facebook com fbID picture type try bitmap BitmapFactor
  • JaCoCo 显示 0% 覆盖率,即使所有测试均已通过

    我在下面写了一些测试用例androidTest目录 我正在使用 androidx testInstrumentationRunner androidx test runner AndroidJUnitRunner 添加的依赖项 androi
  • 如何创建用于测试的对象的 PagedList?

    我一直在使用 Google 的 arch 库 但是让测试变得困难的一件事是使用PagedList 对于此示例 我使用存储库模式并从 API 或网络返回详细信息 因此 在 ViewModel 中 我调用此接口方法 override fun g
  • Facebook 好友请求 - 失踪好友

    我请求从我正在开发的 Android 应用程序中获取用户好友 从 Facebook Api V2 0 开始 我知道我应该只获取已经通过我的应用程序登录的用户好友 但是 尽管我知道用户的某些朋友已通过我的应用程序登录 但在请求该用户的朋友时
  • 如何运行传递给模拟方法的 lambda 函数?

    我想知道是否可以运行作为参数传递给模拟函数的 lambda 函数 并在调用模拟方法时运行它 我正在使用 Mockk 我想象代码是这样的 class DataManager fun submit lambda Int gt Unit val
  • python 和 android 中通过 AES 算法加密和解密

    我有用于 AES 加密的 python 和 android 代码 当我在android中加密文本时 它在python上成功解密 但无法在android端解密 有人有想法吗 Python代码 import base64 import hash
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • Android:防止嗅探(例如使用 CharlesProxy)SSL 流量

    我使用 Charles 检查将我的应用程序发送到 HTTPS 的数据 我在手机上安装了 Charles CA 证书 因此我能够解密每个 SSL 流量 但我发现一些应用程序无法看到 SSL 流量 我如何将这种行为实现到我自己的应用程序中 有了
  • 允许使用 SurfaceTexture 在 GLSurfaceView 渲染器中进行多通道渲染

    我正在显示视频GLSurfaceView使用需要连续应用多个着色器的自定义渲染器 目前 它可以成功地使用一个着色器 但我不确定如何扩展渲染管道以连续应用多个着色器 我知道有一些关于应用多个着色器的示例 使用FrameBuffers and

随机推荐

  • 这段代码能确保我从套接字读取我想要的所有内容吗?

    执行 Socket Receive byte 将从缓冲区中获取字节 但如果预期的数据相当大 则所有字节可能尚未在缓冲区中 这将给我一个仅部分填充的字节数组 这段代码能确保我读入我想要的所有内容吗 sock Receive message b
  • RDD 谱系何时创建?如何找到谱系图?

    我正在学习 Apache Spark 并尝试获取 RDD 的谱系图 但我找不到特定谱系何时创建 另外 哪里可以找到 RDD 的谱系 RDD谱系是每次应用转换时创建和扩展的分布式计算的逻辑执行计划any RDD 请注意执行操作后发生的 逻辑
  • 如何导入同目录或子目录中的类?

    我有一个目录 其中存储了所有 py files bin main py user py where class User resides dir py where class Dir resides 我想使用来自的课程user py and
  • GoF Factory 的命名约定?

    该模式使用抽象工厂 然后使用工厂的实现 我确信这两个类有一个标准的命名约定 但我不知道它是什么 例如 public abstract class ChocolateFactory public class MyChocolateFactor
  • 自动退出SurfaceView

    我正在为 Android 2 x 开发一款游戏 当玩家松手时 我想自动退出并返回到游戏的上一个菜单 这可能是一个简单的问题 但我该怎么做呢 我有一个 MenuActivity 它调用 GameActivity 它调用游戏逻辑所在的 Game
  • 如何使 CSS 网格中的图像彼此相邻并在空间不足时跳转到另一行

    我正在尝试使用 CSS 网格按照图片中所示的方式定位图像 但找不到正确的解决方案 现在 我只是将网格流更改为列 但是网格元素在遇到容器末尾时不会跳转到另一行 它们会调整其大小并保留在相同的第一行中 我尝试使用grid template co
  • 当编辑行中的单元格时,如何更改谷歌电子表格行颜色?

    我已经尝试过这个 当单元格更改文本时更改行颜色的脚本但它无法让它发挥作用 该行的颜色不会更改为 000000 这是我到目前为止所拥有的 function onEdit event var ss event source getActiveS
  • 使用perl的`系统`

    我想运行一些命令 例如command 使用perl的system 认为command从 shell 运行如下 command arg1 arg1 arg2 arg2 arg3 arg4 我该如何使用system to run command
  • OpenAPI 3.0 - oneOf 内的 allOf

    以下 YAML openapi 3 0 0 info title test version 1 0 0 paths test get summary test responses 200 description Test content a
  • 不允许的内容类型:Struts 2 中的 fileUpload

    我是 Struts 2 的新手 正在尝试使用fileUpload拦截器 我正在附加所有代码层 动作类 FileUploadAction package com caveofprogramming actions import java io
  • 将一张工作表的内容和样式克隆到另一张工作表 - PHP Excel

    我需要将 Excel 工作簿中一张工作表的内容复制到新 Excel 工作簿中的一张工作表 问题是 我不知道这些工作表包含什么或其格式 但是 每次都只是第一张 我尝试过一种方法 但每次都会耗尽内存 所以我想我应该逐行执行 100 000 行
  • 在“for (keys %hash) {}”循环中更改键

    我记得关于不更改密钥的事情 for my key keys hash 例如 for my key keys hash key key x 但是删除键并更改值就可以了 我的记忆还好吗 我想你记住的是这样一个事实 如果你这样做 for my i
  • PERMISSION_DENIED Firestore CloudFunction TypeScript

    I have set my Firestore permission so that anyone with my database reference will be able to read or write to my databas
  • cx_freeze 之后的 subprocess.Popen 行为

    我有一些 python 代码使用subprocess Popen打开控制台应用程序并从中获取 stdout stderr 从解释器启动工作正常且符合预期 使用 cx freeze 后 base name Win32GUI选项 Popen 现
  • 游标中的动态表名

    我正在尝试插入架构是动态的数据 就像用户输入架构名称一样 由于某种原因我得到ORA 000942 table doesn t exist即使表存在于正确的架构中 这是代码 declare l ext files names varchar2
  • Oracle SQL Developer 导出源以进行版本控制

    我们有包含很多内容的大型数据库 我想使用版本控制 Git 来管理更改 有很多文章如何一步一步地做到这一点 但我缺少一篇 整个数据库 不包括数据 的文件结构是否有标准或推荐的方法以及如何从现有数据库中获取它 它有很多源 程序 函数 包等 版本
  • MATLAB 使用 IF 语句返回向量函数

    我将一个自写函数称为向量的 函数 如下所示 x values 0 1 2 result func x values 问题是在这个函数中我有一个if语句来确定输出 如果我将此函数应用于标量 则没有问题 但如果我将其应用于数字向量 则if声明没
  • 在android中的listview中加载本地xml数据

    您能建议一个在列表视图中加载本地 XML 数据的简单示例吗 首先将您的 XML 文件放入 raw 文件夹中 然后使用下面的代码使用 Dom Parser 解析此 XML 文件 public class XMLParsingDOMExampl
  • R 函数不返回值

    我正在编写我的第一个 R 函数 IMDBmovierating lt function movie link lt paste http www omdbapi com t movie y plot short r json sep jso
  • ViewPager 内的 ScrollView:滑动不起作用

    我有包含三个片段的 ViewPager 其中之一是内部带有 ScrollView 的 FrameLayout