android我不明白我的子类ImageView中的长按检测

时间:2011-05-27 19:21:05

标签: android onlongclicklistener


我是触摸屏编程的新手,请给我一些帮助!

我有:

public class PhotoEditDrawView extends ImageView {

我有:

@Override
public boolean onTouchEvent(MotionEvent event) {

在构造函数中我有:

setOnLongClickListener(new OnLongClickListener() {
@Override
    public boolean onLongClick(View v) {
        Toast.makeText(ctx, "hello hello ", Toast.LENGTH_SHORT).show();
        return true;
    }
});

onLongClick永远不会被解雇。我做错了什么?
onTouchEvent中的所有内容都运行良好。

我想要做的是按1-2秒时用@android:style/Theme.Dialog开始一个活动。

2 个答案:

答案 0 :(得分:5)

看看这个小片段,它有效!

public class MyImageView extends ImageView {

private Context mContext;

public MyImageView(Context context) {
super(context);
setBackgroundColor(Color.RED);
mContext = context;
setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
    Toast.makeText(mContext, "hello hello ", Toast.LENGTH_SHORT).show();
    return true;
    }

});
}

@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return super.onTouchEvent(event);
}

}

确保您在onTouchEvent和onLongClick中返回true,以便事件继续触发。

答案 1 :(得分:2)

我遇到了与ImageView子类完全相同的问题,onTouch事件触发了OK但我无法通过OnLongClickListener注册长按。最后我在MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP事件中调用了System.currentTimeMillis()来自己计算时差。不完美,但它解决了这个问题&它有效。