1. 程式人生 > >通知欄,狀態列的隱藏與各種細節(坑)

通知欄,狀態列的隱藏與各種細節(坑)

5.0以上通知欄透明

getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams
.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams
.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); window.setNavigationBarColor(Color.TRANSPARENT); }

全屏(狀態列,通知欄全消失)

        //隱藏標題欄
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //隱藏狀態列
getWindow().setFlags(WindowManager.LayoutParams
.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

或者設定主題為(NoTitleBar–去掉標題欄;Fullscreen–去掉狀態列):

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

注意:

requestWindowFeature(Window.FEATURE_NO_TITLE);

無效解決辦法:
1.使用supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
2. 當activity繼承AppCompatActivity,可修改主題為:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
3. Activity直接繼承Activity即可
4. 隱藏狀態列也可以用:

getSupportActionBar().hide();

一旦用了包含AppCompat字樣的主題,那麼getActionBar()均為null,只能用getSupportActionBar()獲取actionBar物件,而且必須繼承AppCompatActivity才能使用getSupportActionBar()