4.0的menu被放到了actionbar上,如果不做任何设置的话,虚拟按键(虚拟的back和home键那里)上不会显示menu。两个解决方法:
1. 修改AndroidManifest.xml,去掉android:targetSdkVersion的值。
- <uses-sdk
- android:minSdkVersion="9"
- android:targetSdkVersion="19" />
改成
- <uses-sdk android:minSdkVersion="9" />
这么改之后,所有的Activity中都会显示menu键
2.在需要虚拟按键(虚拟的back和home键那里)上显示menu的Activity的Create函数中setContentView之后调用 Window.getFlags()来设置menu键的可见性。如:
- try {
- getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
- }catch (NoSuchFieldException e) {
- // Ignore since this field won't exist in most versions of Android
- }catch (IllegalAccessException e) {
- Log.w("feelyou.info", "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e);
- }
若是想去掉menu键,而不想改targetSDK,可以在 Activity的Create函数中setContentView之后调用如下代码:
- try {
- getWindow().clearFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
- }catch (NoSuchFieldException e) {
- // Ignore since this field won't exist in most versions of Android
- }catch (IllegalAccessException e) {
- Log.w("feelyou.info", "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e);
- }