在ListFragement
我希望在用户长按一下后在项目旁边显示其他修改选项。
使用自定义ArrayAdapter
中的以下代码(内部getView
)可以正常使用:
rowView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
//Show the edit controls
View editArea = rowView.findViewById(R.id.editArea);
editArea.setVisibility(View.VISIBLE);
//Don't raise additional events for this touch
return true;
}
});
但是,我的问题是使用哪个事件来隐藏那些额外的编辑控件。
理想情况下,当显示编辑控件时,应忽略它们之外的任何触摸以支持隐藏它们(有点像打开对话框并且用户点击除此之外的某处)。
我尝试在我的MainActivity中覆盖dispatchTouchEvent
- 但是,如果我通常拦截所有ACTION_DOWN
个事件,我的编辑控件会在点击发送给他们之前隐藏(当然)。
在没有调度事件的情况下,是否有可能检测到用户触摸了哪个控件?
如果我拦截所有ACTION_UP
,则当用户结束长按时,将删除编辑控件。我试图避免特定的ACTION_UP
是否属于长触摸,因为这会产生一些非常混乱的代码。
要听哪些事件的想法?
或者你知道更好的,替代的方式来实现我的目标吗?