0

我有一个包含切换全屏功能的应用程序。
使用以下代码成功切换全屏。

    if (tofull) {

        if (Build.VERSION.SDK_INT < 16) {
            Log.i("toggleFullScreen", "API<16");
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            Log.i("toggleFullScreen", "API>=16");
            View decorView = getWindow().getDecorView();
            // Hide the status bar.
            // int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
            decorView.setSystemUiVisibility(uiOptions);
        }

    } else {
        if (Build.VERSION.SDK_INT < 16) {
            Log.i("toggleFullScreen", "API<16");
            getWindow().clearFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            Log.i("toggleFullScreen", "API>=16");
            View decorView = getWindow().getDecorView();
            // Hide the status bar.
            int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

它可以在切换到全屏模式后隐藏状态栏。

但是,当我按下硬件菜单键按钮(我有一个选项菜单将在按下菜单键后显示)时,状态栏就会出现。并且状态栏不再隐藏

这个问题存在的可能原因是什么?
谁能解决它(使状态栏再次自动隐藏)?

4

2 回答 2

0

请在您的活动中覆盖此方法

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_MENU) {
        Log.d(TAG,"did pressed menu button");
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

因此,当您的应用程序处于全屏模式时,您可以避免显示菜单。

于 2014-12-17T13:47:30.440 回答
0

那是因为标志已被清除,您需要再次调用全屏功能。

请阅读这篇文章。 https://developer.android.com/training/system-ui/immersive.html

请注意,这仅来自 api 19。

于 2014-12-09T09:52:23.030 回答