unregisterForContextMenu可以完全取消注册视图吗?

Sha*_*ade 0 android contextmenu

我有一个ListView,它可以有一个上下文菜单.我正在分别使用registerForContextMenuunregisterForContextMenu注册本身或与显示/工作的上下文菜单相关的任何问题.

为上下文菜单注册视图时,当用户单击它时,其背景会逐渐从橙色变为黄色,然后再变为白色.从未为上下文菜单注册视图(它保持相同的颜色)时,不会发生这种情况.但是,当我unregisterForContextMenu用来取消注册相关视图时,此效果仍然有效并且可能会使用户感到困惑 - 因为效果,他/她会期望一个上下文菜单.这说明unregisterForContextMenu并没有完全扭转效果registerForContextMenu.

我的问题是:有没有办法完全取消注册View获取上下文菜单?

如果有人更清楚地知道(un)registerForContextMenu内部如何运作,请分享您的想法.

编辑:我刚看到这不适用于HTC的感知界面,因为没有实现'美白'效果.所以这个问题仅适用于默认的Android界面.

Sha*_*ade 8

结果很简单.registerForContextMenu (View v)只是调用v.setOnCreateContextMenuListener (this),指的是调用Activity作为OnCreateContextMenuListener.问题是在View类中,setOnCreateContextMenuListener正在检查视图是否可以长按,而如果不是,则将其设置为.但是,该方法unregisterForContextMenu (View v)只调用v.setOnCreateContextMenuListener (null).但是setOnCreateContextMenuListener不检查传递的是否OnCreateContextMenuListener为null,因此总是留下有问题的视图可以长按.

解决方案是v.setLongClickable (false)手动调用.