`
surecn
  • 浏览: 6353 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android 开启虚拟菜单键

阅读更多

android 新版本已经不推荐使用menu键,虽然api隐藏了,但还是可以通过反射的方式进行调用

对于sdk版本小于21(包含)的可以用Window 的addFlags 获取clearFlags的方法开启或关闭

对于sdk版本大于21的可以通过给WindowManager.LayoutParams 的 needsMenuKey设置相应的值来进行开启或关闭

 

封装成一个方法

public void setVirtualMenu(boolean flag){
        try {
            if (Build.VERSION.SDK_INT > 21) {
                WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
                WindowManager.LayoutParams.class.getField("needsMenuKey").set(layoutParams, flag ? 1 : 2);
                getWindow().setAttributes(layoutParams);
            } else if (Build.VERSION.SDK_INT <= 21) {
                if (flag) {
                    getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
                } else {
                    getWindow().clearFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
                }
            }
        }catch (NoSuchFieldException e) {
            e.printStackTrace();
        }catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

 

 

分享到:
评论
Global site tag (gtag.js) - Google Analytics