Search code examples
androidstatusbarpopupwindowandroid-popupwindow

Dismiss Android PopUpWindow object makes the status bar visible. How to stop this?


I am having an Activity which is fullscreen. I am making the fullscreen activity using the below code (which I am calling in onResume method)

int currentApiVersion = Build.VERSION.SDK_INT;

    final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    // This work only for android 4.4+
    if (currentApiVersion >= Build.VERSION_CODES.KITKAT) {
        activity.getWindow().getDecorView().setSystemUiVisibility(flags);
        // Code below is to handle presses of Volume up or Volume down.
        // Without this, after pressing volume buttons, the navigation bar will
        // show up and won't hide
        final View decorView = activity.getWindow().getDecorView();
        decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    decorView.setSystemUiVisibility(flags);
                }
            }
        });
    }

In this Activity, I am opening a PopUpWindow object. But after opening this, the status bar becomes visible. How to stop this ?

For showing the PopUpWindow, I am using the below code:

popupWindow = new PopupWindow(layout, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT, true); popupWindow.showAtLocation(layout, Gravity.NO_GRAVITY, 0, 0);

I am not able to figure out, what is wrong in these methodology. Please help. Thanks in advance.


Solution

  • Change the way of Implementation and Apply this code in your onCreate on that Activity and make sure one thing you have added this before setContentView() in OnCreate

    @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                requestWindowFeature(Window.FEATURE_NO_TITLE);
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
                setContentView(R.layout.splash_layout);
        }