【问题标题】:Issue in OnTouchListener for ImageViewImageView 的 OnTouchListener 中的问题
【发布时间】:2011-10-25 13:24:07
【问题描述】:

我已将 OnTouchListener 设置为图像视图。当用户按下图像和按下图像时,我想做两个不同的操作。但我总是将按下事件作为(ACTION_DOWN),但如果我使用按钮而不是 ImageView,那么我可以同时使用 ACTION_DOWN 和 ACTION_UP。但我必须使用 ImageView 而不是 Button。 ImageView中如何实现ACTION_UP事件

prevImage.setOnTouchListener(this); // prevImage is an image View

@Override
    public boolean onTouch(View view, MotionEvent arg1) {
        // TODO Auto-generated method stub

        Log.i("Wallpaper","...On touch ..." + arg1.getAction());
        if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
            //set img1 as imagesource 
        } else if (arg1.getAction() == MotionEvent.ACTION_UP) {
            //set img2 as imagesource and parse data from url
        }

        return false;

}

谢谢

【问题讨论】:

  • 一些关于如何测试图像视图事件的代码将使我们更好地理解问题。
  • 您可以使用 ImageButton 代替 ImageView 或者您可以使用 Button 并将图像设置为背景并达到您的目的。希望这个想法对你有所帮助。
  • 问题是我必须使用 ImageView。并且图像来自服务器。如果我使用 Button 或 ImageButton,我无法获得图像的外观和填充效果。

标签: android imageview ontouchlistener


【解决方案1】:

不知道是不是太晚了。

您可以通过将其添加到您的 xml 文件中的 imageView 来做到这一点

android:clickable="true"

如果你已经这样做了,你可以使用 if 和 else if 。

希望这会有所帮助。

【讨论】:

  • 也可以设置onClickListener
【解决方案2】:

请检查是否触发了 ACTION_CANCEL 而不是 ACTION_UP。当涉及到图像时,它可能会被触发而不是 ACTION_UP。

[编辑] 另外,如果您拦截 ACTION_DOWN 事件,则必须返回 true 才能触发 ACTION_UP。

【讨论】:

  • 只有 ACTION_DOWN 被触发,没有其他事件被触发
  • 拦截 ACTION_DOWN 后你是否返回true(你应该)?粘贴一些代码可能有用...
猜你喜欢
  • 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
相关资源
最近更新 更多