我已经实现了一个自定义TextView
类,以便我可以处理TextView
中存在的GridView
的触摸和触摸发布事件。我得到了这个工作。但是,我还为OnItemClickListener
设置了GridView
,这样我就可以处理该事件并在主片段中运行代码 - 点击它不适合处理自定义{{1}类本身。但是现在我已经实现了两个冲突,并且现在没有触发释放触摸的事件。
我如何允许触发这些手势事件 - 在自定义类中TextView
和GridView中的onTouchEvent
,而不会丢失某些操作事件?
OnItemClickListener
在自定义TextView类中:
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//handle click
}
});
使用此代码,当我点按并释放@Override
public boolean onTouchEvent(MotionEvent event) {
//handle touch and release events only
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//handle touch down
}
else if (event.getAction() == MotionEvent.ACTION_UP
|| event.getAction() == MotionEvent.ACTION_MOVE
|| event.getAction() == MotionEvent.ACTION_CANCEL
|| event.getAction() == MotionEvent.ACTION_OUTSIDE
|| event.getAction() == MotionEvent.ACTION_SCROLL) {
//handle touch release
}
return super.onTouchEvent(event);
}
时,会运行触地下载代码,TextView
会调用OnItemClickListener
,但GridView
不会再次调用,因此不会处理触摸释放事件。
如果我将onTouchEvent
更改为以下内容,则会正确处理触控和触控释放,但不会调用onTouchEvent
:
OnItemClickListener