喜
我是触摸屏编程的新手,请给我一些帮助!
我有:
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
开始一个活动。
答案 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()来自己计算时差。不完美,但它解决了这个问题&它有效。