android - 检测对 Android Gallery 项目不同区域的点击

标签 android click onclick gallery onfling

大家好,我已经研究了一段时间,但我还没有找到 100% 有效的解决方案。

问题

我有一个循环显示项目的 Android Gallery,每个项目都由一个 ImageView(我们称之为缩略图)和它下方的另一个 View 组成,其中包含一些文本和一个小图标(我们称之为标题)。

我想要实现的是基于用户点击位置的 2 种不同操作,所有这些操作都不会影响画廊向左和向右滑动的方式。

例如,如果单击缩略图,我想执行操作 A(例如弹出一个更大的版本),而当单击标题时,我想执行操作 B,比如弹出一个 toast 带有图片的标题。

我尝试过的事情

在我看来,有两种解决问题的方法:

方法一

从包含图库的主视图中将 OnItemClickListener 附加到图库项目,然后从图库适配器中将 OnClickListener 附加到标题。

虽然这种方法有效,但它似乎可以防止画廊在被标题捕获和拖动时抛出。

由于 onClick 返回 void,因此似乎无法将 onClick 事件向下传递以供 Gallery 的 onItemClick 稍后处理。

因为我希望能够使用 Title 进行 throw ,所以这种方法对我不起作用,至少在当前版本中是这样。

方法二

第二种方法是在 Gallery 的 setOnItemClickListener 中包含所有检测逻辑。

如果有一种方法可以确定点击的 View 是缩略图还是标题,那么一切都会非常简单,而且 fling 也会完好无损。

但是,我还不知道该怎么做。

g.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView parent, View v, int position, long id) {
    // TODO: figure out which view has been clicked on, but how?
  }
}

由于我使用带有 ViewHolders 范例的无限适配器,所以我尝试打印这些值:

Log.d("IDs", v.getId() + " " + ((ViewHolder) v.getTag()).thumbnail.getId() + " " + getSelectedItemId() + " " + parent.getId() + " " + parent.getItemIdAtPosition(0));

但是在点击缩略图之后它们都不同了:

-1 2131230800 -9223372036854775808 2131230865 0

所以,现在我被难住了。聪明的 Android 社​​区,你能帮帮我吗?

谢谢。

最佳答案

我为您提供了一个解决方案:SwipeView。这是我的一个开源项目,查看 github 上的最新源代码(我网站上的二进制文件有点过时了,很多与你所说的事情有关的错误已经被修复)

https://github.com/fry15/uk.co.jasonfry.android.tools

这里有一个演示项目:http://jasonfry.co.uk/?id=28

尽情享受吧!

关于android - 检测对 Android Gallery 项目不同区域的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148870/

相关文章:

java - Webview + 底部的 admob + LinearLayout

javascript - 如何仅将 .click() 事件绑定(bind)到容器?

c# - WPF:单击后的焦点边框

C# 如何单击 IList 中的 IWebelement?

jquery - 点击打开子菜单,jquery

javascript - 如何让我的div默认折叠?

javascript - 单击父级填充 iframe 输入字段

java - 获取包com.google.android.gms.ads.identifier不存在,同时尝试获取google广告id

javascript - 从 JSON 对象(React-Native js)中删除键值对?

android - 开发人员如何在 Android 应用程序中集成 GUI?