ImageView的OnTouchListener出现问题

3

我已为ImageView设置了OnTouchListener监听器。我希望在用户按下图像和松开图像时执行两个不同的操作。但是,无论如何,我都会得到(ACTION_DOWN)的按下事件,但如果我使用Button而不是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;

}

谢谢


提供一些关于如何测试图像视图事件的代码,可以更好地帮助我们理解问题。 - Yashwanth Kumar
你可以使用ImageButton代替ImageView,或者使用Button并将图像设置为其背景来实现你的目标。希望这个想法能帮到你。 - Android Killer
问题是我必须使用ImageView,而图像来自服务器。如果我使用Button或ImageButton,我无法获得图像的外观和填充效果。 - Sunil Kumar Sahoo
2个回答

7
不知道是否为时已晚。
您可以在xml文件的imageView中添加以下内容实现此操作。
android:clickable="true"

你可以像之前一样使用if和else if。

希望这有所帮助。


你也可以设置 onClickListener。 - tuzr2002

1
请检查是否触发了 ACTION_CANCEL 而不是 ACTION_UP。当涉及到图像时,可能会触发 ACTION_CANCEL 而不是 ACTION_UP
[编辑] 此外,如果拦截了 ACTION_DOWN 事件以便让 ACTION_UP 得到触发,则必须返回 true

只有 ACTION_DOWN 被触发,没有其他事件被触发。 - Sunil Kumar Sahoo
1
在拦截 ACTION_DOWN 之后,你是否返回了 true 值(应该是这样的)?贴上一些代码可能会有帮助... - Ognyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接