在电视上做的一个简单应用,需要全屏隐藏ActionBar,遥控器没有办法选中optionsMenu,点击遥控器上的菜单按钮不能激活optionsMenu,而在手机上是正常的。
考虑了一下,采取用onKeyDown的方式调用Activity的 openOptionsMenu方法。但是奇怪的是,KEY_CODE 获取匹配值KEY_MENU(为82),调用super.openOptionsMenu()
仍然没反应,也不报错。
最后谷歌一下,在stackoverflow上发现一种解释,与版本有关:“Android openOptionsMenu does nothing in KitKat”,解决方法如下。
@Override
public void openOptionsMenu() {
Configuration config = getResources().getConfiguration();
if ((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) > Configuration.SCREENLAYOUT_SIZE_LARGE) {
int originalScreenLayout = config.screenLayout;
config.screenLayout = Configuration.SCREENLAYOUT_SIZE_LARGE;
super.openOptionsMenu();
config.screenLayout = originalScreenLayout;
} else {
super.openOptionsMenu();
}
}
然后调用自己重写的openOptionsMenu方法,解决。
具体解释可以参考:
http://stackoverflow.com/questions/25831634/android-openoptionsmenu-does-nothing-in-kitkat
http://stackoverflow.com/questions/9996333/openoptionsmenu-function-not-working-in-ics