【发布时间】:2014-12-31 06:43:38
【问题描述】:
我有一个图像视图,我在其上设置了 OnLongClickListener。同时,我正在监听 Activity 通用的 OnTouchEvent。我希望检测到对视图的长按,然后他们开始使用 onTouchEvent MOVE 动作移动它。
问题是,如果我长按然后拖动手指,则不会调用 OnTouchEvent。我必须抬起手指然后再按一次才能发生 OnTouchEvent。
我尝试在 onLongClick 上返回 true 并返回 false,但没有成功。
有什么理由吗??
编辑:为澄清而添加的代码
MainActivity A extends Activity implements OnLongClickListener{
public void onCreate(){
super.OnCreate();
setContentView(R.layout.myLayout);
ImageView iv = (ImageView) findViewById(R.id.myImage;
iv.setOnLongClickListener();
}
public Boolean OnLongClick(View v){
Log.i("On Long Click activated");
return true;
}
public Boolean OnTouchEvent(MotionEvent event){
Log.i("OnTouch event activated");
return super.OnTouchEvent();
}
所以从上面的代码中,如果你长按一个视图并移动你的手指(甚至在视图之外)而不抬起你的手指,那么只会显示以下日志: “长按激活”
【问题讨论】:
-
请贴一些代码,你尝试了什么
-
希望我能从你的话中理解,这不是你假设在
onTouchEvent之后称为OnLongClickListener的内容。但是,当您简单地触摸时,意味着只有onTouchEvent事件应该调用,而当长按时,只有OnLongClickListener应该调用。 -
我添加了代码供参考。
-
Mobi 我想你误解了我的问题..查看代码进行澄清
-
长按可点击的视图会消耗所有的触摸事件,即使在执行长按之后,也不管长按是否被处理。因此,不允许将任何触摸事件传递到
Activity级别。你应该在ImageView上设置一个触摸监听器。