2

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_UPs,则当用户结束长按时删除编辑控件。而且我试图避免特定是否ACTION_UP属于长触摸,因为这会产生一些非常混乱的代码。

有什么想法要听哪个事件吗?
或者你知道任何更好的替代方法来实现我的目标吗?

4

0 回答 0