2010-10-17 62 views
8

如何从选项菜单项中删除焦点?即当我第一次打开菜单时,没有任何项目有焦点。但是,如果我使用跟踪球将注意力集中在其中一个上,然后关闭并重新打开菜单,焦点仍然存在。我如何摆脱它?选项菜单 - 从项目删除焦点

我正在清理并重新创建onPrepareOptionsMenu中的菜单(因为我必须将其调整为当前活动状态)。

编辑:

public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.clear(); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 

    return true; 
} 
+2

你能找到解决方案吗? – dropsOfJupiter 2011-07-06 23:38:35

+1

你可以发布代码来重现问题吗?我会很乐意为你研究它。这是一个有趣的问题。 – 2011-08-02 20:09:28

回答

0

一旦你使用轨迹球(或者实际上按键盘上的任何其他键),退出touch mode。从那时起,会有一些观点关注焦点(你可以通过调用Activity.getCurrentFocus()来看到这一点)。此模式一直持续到您再次触摸屏幕为止,此时您将重新进入触摸模式,并且在后续场合打开菜单时不会有焦点项目。这发生在我用菜单看过的每一个Android应用程序中。

这种情况不仅存在于选项菜单项中,而且还存在于布局中的视图。一旦你离开触摸模式,我认为没有办法再次输入它(因此除去所有视图中的焦点),除非你触摸屏幕。我曾经见过的一个解决方案是为了消除焦点的可见效应(当不在触摸模式下)时,只需将其提供给不可见的元素即可。你可以创建一个不可见的菜单选项,并在你想清除它时给它关注吗?

除非你找到一个方法来编程,可靠地进入触摸模式或从(调用View.clearFocus()只是把它传递给另一个视图!)所有视图移除焦点,这可能是你最好的选择。