对触摸特定控件之外的事件做出反应

时间:2012-09-23 18:41:16

标签: android touch

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是否属于长触摸,因为这会产生一些非常混乱的代码。

要听哪些事件的想法?
或者你知道更好的,替代的方式来实现我的目标吗?

0 个答案:

没有答案