8

如何从选项菜单项中移除焦点?即当我第一次打开菜单时,没有一个项目有焦点。但是,如果我使用轨迹球关注其中一个,然后关闭并重新打开菜单,焦点仍然存在。我该如何摆脱它?

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

编辑:

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

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

    return true;
}
4

1 回答 1

0

一旦你使用了轨迹球(或者确实按下了键盘上的任何其他键),你就退出了触摸模式。从那时起,将会有一些具有焦点的视图(您可以通过调用来查看Activity.getCurrentFocus())。此模式会一直持续到您再次触摸屏幕,此时您将重新进入触摸模式,并且当您在随后的情况下打开菜单时将没有焦点项目。这发生在我见过的每一个带有菜单的 Android 应用程序中。

这种情况不仅存在于选项菜单项,也存在于布局中的视图。一旦你离开触摸模式,我不认为有办法再次进入它(因此从所有视图中移除焦点),除非你触摸屏幕。我看到的一个解决方案被引用来消除焦点的可见效果(当不处于触摸模式时)是简单地将它提供给一个不可见的元素。你能创建一个不可见的菜单选项并在你想清除它时给它焦点吗?

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

于 2011-08-07T14:42:06.297 回答