Android 解决界面底部弹出dialog被虚拟按键遮挡一部分的问题

来源:互联网 发布:java核心技术 pdf 编辑:程序博客网 时间:2024/04/29 00:38

原文链接: http://blog.csdn.net/shengyakun1/article/details/54174893


Android 部分机型没有物理按键,只有虚拟按键,Activity全屏方法如下:

1、在

setContentView(R.layout.activity_main);之前添加
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

 2、当用户划出虚拟按键后,自动再隐藏方法如下:

getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {    @Override    public void onSystemUiVisibilityChange(int visibility) {        int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |                //布局位于状态栏下方                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |                //全屏                View.SYSTEM_UI_FLAG_FULLSCREEN |                //隐藏导航栏                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;        if (Build.VERSION.SDK_INT >= 19) {            uiOptions |= 0x00001000;        } else {            uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;        }        getWindow().getDecorView().setSystemUiVisibility(uiOptions);    }});
3、dialog 隐藏方法

mDialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);mDialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {    @Override    public void onSystemUiVisibilityChange(int visibility) {        int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |                //布局位于状态栏下方                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |                //全屏                View.SYSTEM_UI_FLAG_FULLSCREEN |                //隐藏导航栏                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;        if (Build.VERSION.SDK_INT >= 19) {            uiOptions |= 0x00001000;        } else {            uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;        }        mDialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions);    }});要在mDialog.show();之前。


我用上面的方法解决了这一问题.有个地方注意下:

3、dialog 隐藏方法   里原作者使用的全屏设置,效果是弹出dialog时原来的页面会变为全屏,我不需要该功能,所以把

View.SYSTEM_UI_FLAG_FULLSCREEN |
这一句给去了就可以了.

记录下这个问题.

0 1