在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;
}
});
但是,我的问题是使用哪个事件来隐藏那些额外的编辑控件。
理想情况下,当显示编辑控件时,应该忽略它们之外的任何触摸以支持隐藏它们(有点像打开对话框并且用户单击它旁边的某个位置时)。
我尝试dispatchTouchEvent
在我的 MainActivity 中覆盖 -ACTION_DOWN
但是,如果我通常拦截所有事件,我的编辑控件在点击被分派给它们之前被隐藏(当然)。
是否有可能检测到用户触摸了哪个控件而尚未调度事件?
如果我拦截所有ACTION_UP
s,则当用户结束长按时删除编辑控件。而且我试图避免特定是否ACTION_UP
属于长触摸,因为这会产生一些非常混乱的代码。
有什么想法要听哪个事件吗?
或者你知道任何更好的替代方法来实现我的目标吗?