在 Gallery 中嵌入 ListView

2024-03-03

目标是实现一个 Gallery,其适配器返回 ListView(换句话说,嵌入水平滚动 Gallery 中的垂直滚动 ListView)。经过一些工作后它就可以工作了,但是当尝试水平滚动时,ListView 看起来非常不稳定,就像居中时有一些粘性。我还没有在图库中嵌入任何其他类型的视图时观察到这种行为。

这是我尝试过的:

最初,我发现 ListView 压缩了触摸事件,因此 Gallery 上的手势侦听器永远不会被触发。

所以在Activity的onCreate()方法中,我创建了一个GestureDetector:

galleryGestureDetector = new GestureDetector(this, gallery);

然后,在 Gallery 适配器的 getView() 方法内,在 ListView 已膨胀并配置之后,我有一些如下代码:

listView.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        galleryGestureDetector.onTouchEvent(event);
        return true;
    }
});

在这种情况下,我什至采取了从 OnTouchListener 返回 true 的极端步骤,以确保 listView 的 onTouchEvent() 方法永远不会被实际调用。同样的紧张行为也会发生。因此,我认为我可以排除两个视图之间竞争的 onTouchEvent() 实现。

我也尝试滥用 TouchDelegate 概念,通过扩展 Gallery 的触摸矩形以包含 ListView,然后强制 ListView 委托给它,但这也是徒劳的。

我会举手说目前这是不可能的,但 DroidX 附带的社交网络应用程序以某种方式实现了它!


问题在于 ListView 正在拦截来自 Gallery 的触摸事件,然后更改视图位置本身。这就是导致我按原样使用小部件时看到的来回抖动效果的原因。我认为这是 Gallery 小部件中的一个错误,但同时可以通过像这样子类化 Gallery 来修复它:

public class BetterGallery extends Gallery {
private boolean scrollingHorizontally = false;

public BetterGallery(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

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

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

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    super.onInterceptTouchEvent(ev);
    return scrollingHorizontally;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    scrollingHorizontally = true;
    return super.onScroll(e1, e2, distanceX, distanceY);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()) {
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_CANCEL:
        scrollingHorizontally = false;
    }

    return super.onTouchEvent(event);
}

}

如果您使用 BetterGallery 代替 Gallery,那么整个事情就很好了!

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

在 Gallery 中嵌入 ListView 的相关文章

  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • java.lang.ClassCastException: [B 无法转换为 java.lang.String

    我编写了一个带有字段 LoginId 和密码的实体类 我使用 AES ENCRYPT 加密密码并将其存储在数据库中 我只想检索已解密的密码 所以 我使用 AES DECRYPT 使用本机查询是在 OPen JPA 2 0 中 我写的查询是
  • 如何在不同的班级中启动和停止计时器?

    我想测量从传入 HTTP 请求开始到应用程序到达某个点的时间 这两个时间点都位于不同的类中 我将如何启动和停止这些不同类别的计时器 我没有看到使用 MeterRegistry 中的 命名 计时器的方法 我该怎么办呢 您可以使用 AOP 如下
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • Wildfly 10.1 消耗所有核心

    我们最近将银行应用程序从 java 1 6 升级到 1 8 将 jboss 4 x 升级到 wildfly 10 1 我们观察到 java 消耗了机器上可用的所有核心 10 有人可以告诉是什么原因吗 通常情况下 jboss 4 x 的最大
  • 当通过 Map.put(K, V) 添加值时,是否必须通过 Map.get(K) 返回相同的实例?

    假设您有以下代码 Map
  • 尝试在 android 中使用 Google Maps Android API v2 显示 StreetView 但无法使其正常工作

    我很长时间以来一直在尝试在 Android 中显示特定位置的街景 但不幸的是未能成功 我需要的是 如果我向地图提供位置 LAT LONG 它应该显示该特定位置的街景 以下是显示地图 3D 地图 混合地图 卫星视图等的工作代码 但不显示街景
  • 如何在android上使用xamarin表单执行脚本

    我正在尝试在 Android Mono 上使用 Xamarin Forms 运行 C 脚本 当我运行脚本时 我收到错误 System IO FileNotFoundException 找不到文件 mscorlib dll 这是我试图执行的代
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • 加载带有月份标题的 recyclerview 不同类型适配器

    如果从 api 获取不同的月份名称 则尝试将月份名称显示为标题 在这里 我加载月份标题 但是当我加载标题时 它不会加载其他视图 如果数据不同 我需要将月份加载为标题 并且还加载其他视图持有者 我看到一些例子 他们都在 Model 类中使用
  • 找出该月第一个星期日/星期一等的日期

    我想在java中检测每个月第一周 第二周的第一个星期日 星期一的日期 我怎样才能实现它 我已经检查了 java 中的 Calendar 类和 Date 类 但无法找到解决方案 所以请帮助我解决这个问题 Calendar calendar C
  • Android:禁用 1.5 纸杯蛋糕动画过渡

    长话短说 如何禁用活动之间的屏幕转换 如果您愿意的话 我们实现了自己的选项卡处理程序 现在它正在选项卡之间进行转换 这看起来很俗气 谢谢 Chris See android content Intent FLAG ACTIVITY NO A
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • 无法使用 Alarmmanager 定期在后台进行工作

    我想按小时在后台调用一项服务 第一个问题是警报管理器工作不顺利 计时器很糟糕 有时早有时晚 第二个问题是 RemoteServiceException Context startForegroundService 然后没有调用 Servic
  • 在 Android 中将列表传递给另一个 Activity

    我已经创建了一个列表 并希望将该列表传递给另一个活动 但当我创建意图时 我在 putExtra 语句上收到错误 只是想知道是否有任何简单的方法来传递字符串列表而不是单个字符串 Thanks private List
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行
  • 什么是 Android DecorView?

    http developer android com reference android view Window html getDecorView http developer android com reference android

随机推荐

  • 如何修改Solr给出的搜索结果页面?

    我打算做一个利基搜索引擎 我使用 apache nutch 1 6 作为爬虫 使用 apache solr 3 6 2 作为搜索器 我必须说 网络上有关这些技术的更新信息非常少 我按照这个教程http wiki apache org nut
  • ServletContext getRealPath 方法 - 什么是虚拟路径?

    我正在阅读的文档getRealPath String s http docs oracle com javaee 5 api javax servlet ServletContext html getRealPath 28java lang
  • 如何更改日期选择器中的日期格式

    在我的 iPhone 应用程序中 我需要显示日期yyyy MM dd格式如下图所示 但在 iPhone 日期选择器中 它的格式为月 日 年这对于我的申请来说不统一 我尝试更改日期选择器的本地值 不同国家 地区 但仍以默认格式使用它 如何根据
  • 如何在 Angular 5 中的应用程序范围启动时加载列表(http 调用)?

    我希望在启动时加载数据 例如使用 LocationsService 的国家 地区 我已经实现了当前的服务 Injectable export class LocationsService public countries Country c
  • HttpContext.Current.User.Identity.IsAuthenticated 返回 false

    我有一个奇怪的问题 我有一个包含以下代码的页面 if HttpContext Current User Identity IsAuthenticated Server Transfer Views Public Unauthorised a
  • 不幸的是 已停止

    我有一个应用程序 用户以表单提交一些数据 然后将其发送到服务器 我正在平板电脑和 Android 智能手机 Galaxy S2 上对其进行测试 在平板电脑上 一旦我单击 提交 应用程序就会停止工作 并显示消息 不幸的是已停止工作 这个问题在
  • 在没有模块的情况下访问 JDK 11 中的“sun.security.x509”?

    tl 博士在最后 我们有一个生成自签名 SSL 证书的小方法 它显然取决于sun security x509 因此 目前我们仍在使用 JDK8 构建它 尽管代码库的其余部分 它只是一个小型的单个库 是使用 JDK11 构建并使用 JVM11
  • 创建不带输入文本框的复制按钮

    我需要一些 JavaScript 来制作一些文本 以便在您单击按钮时复制您的剪贴板 我已在下面附加了按钮 HTML 注意 我有多个按钮
  • TFS:将一个分支中本地完成的更改提交到另一个分支

    我对很多文件进行了更改 同时我想我宁愿将这些未经测试的代码提交到尚未创建的分支 这样现有代码库的用户就不会受到影响 由于我接触了很多很多文件并创建和添加了新的子项目等 我想避免手动复制文件和文件夹 在 Visual Studio 中完成此操
  • 从命令行调用 python 脚本而不先输入“python”

    问题 在命令行中 如何调用 python 脚本而无需键入python在脚本名称前面 这可能吗 Info 我编写了一个方便的脚本 用于从命令行访问 sqlite 数据库 但我有点不喜欢键入 python SQLsap args 而宁愿只键入
  • 从 RDF 到 html 的 XSLT 转换

    我正在尝试使用 XSLT 将 RDF 文件转换为 HTML 我正在使用我在网上找到的模板 http snippets dzone com posts show 1164 http snippets dzone com posts show
  • 使用 toString 进行 Java 语言设计

    他们决定不实施toString方法用于int 而是让它继承toString方法来自Object 他们确实实施了更合理的toString数组的方法 他们位于java util Arrays http docs oracle com javas
  • 谷歌地图 myoptions 不起作用

    我正在尝试自定义马萨诸塞州地图 以显示 10 个区 我已将链接添加到在 我的地点 中创建的地图 但无法使地图居中 缩放或标题 中心 LatLng 是伍斯特 没有任何效果 帮助 Thanks
  • 如何查看 PHP SOAP 客户端类生成的实际 XML?

    考虑以下 SOAP 客户端脚本示例 SOAP new SoapClient WDSL Create a SOAP Client from a WSDL Build an array of data to send in the reques
  • Ionic 3 Native:文件:{代码:5,消息:“ENCODING_ERR”}

    我正在使用文件 API 插件中的 checkFile 函数 https ionicframework com docs native file checkFile在 Ionic 3 中检查文件是否存在于本地 Promise 被拒绝并出现以下
  • 如何以安全的方式为 HTTPS 配置 OpenSSL?

    每个月 网络上都会有一些文章介绍某些应用程序或平台在 SSL 实施中使用过时的加密配置 这让我担心 我自己的实现怎么样 当我在应用程序中使用 OpenSSL 来提供和 或使用 HTTPS 时 我到底应该做什么才能以最安全的方式配置 Open
  • Heroku 上的 ffmpeg:无法识别的选项“预设”

    我在本地 Rails 应用程序中使用 ffmpeg 版本 1 2 4 来转换视频文件 当我在本地运行应用程序时 一切都按预期工作 当我部署到heroku时 我添加了ffmpeg的构建包 https github com shunjikoni
  • 反序列化 JSON 日期(无时区)

    从昨天开始 我遇到了一个让我头疼的问题 不知道如何处理 我的数据库中有一个日期字段 其中包含以下值 然后我的应用程序获取该值并将其发送到我的网络表单 价值仍然相同 没关系 在客户端 我使用 javascript 警报进行中断 以查看来自 J
  • 从 tkinter 中的文本小部件复制格式化文本

    我正在使用 tkinter 在 Python 中开发 APA 引文制作器 我使用文本小部件在生成引文后显示引文 但每当我复制文本 目前使用 ctrl c 快捷方式 时 它都会丢失其格式 是否有某种方法可以从文本小部件复制格式化文本 例如斜体
  • 在 Gallery 中嵌入 ListView

    目标是实现一个 Gallery 其适配器返回 ListView 换句话说 嵌入水平滚动 Gallery 中的垂直滚动 ListView 经过一些工作后它就可以工作了 但是当尝试水平滚动时 ListView 看起来非常不稳定 就像居中时有一些