【问题标题】:Detecting clicks to different areas of Android Gallery items检测对 Android 图库项目不同区域的点击
【发布时间】:2011-02-28 23:33:58
【问题描述】:

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

问题

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

我想要实现的是基于用户点击位置的 2 种不同的操作,所有这些操作都不会破坏图库向左和向右移动的方式。

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

我尝试过的事情

在我看来,有两种方法可以解决这个问题:

方法一

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

虽然这种方法有效,但它似乎可以防止画廊在被标题抓住和拖动时被扔掉。

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

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

方法2

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

如果有办法判断点击的视图是缩略图还是标题,一切都会很简单,并且会完好无损。

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

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 click onclick gallery onfling


    【解决方案1】:

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

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

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

    享受吧!

    【讨论】:

    • 谢谢弗莱,我已经得到了关于你的项目的提示,但我希望在此期间,你能告诉我你将如何解决这个问题(我很快就会看看你的代码)。
    • 好的,获取您的 SwipeView,在每个页面(一个页面可以是任何 ViewGroup)上都有您的 imageview 和您的 textview。在您的 imageview 和 textview 上弹出一个 onclicklistener。使用触摸事件的单击侦听器应该没有任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多