android之状态栏

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //隐藏状态栏。必须放在 setContentView(R.layout.activity_main);之前设置
//        requestWindowFeature(Window.FEATURE_NO_TITLE);
//        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);
**************修改状态栏的颜色方法一:
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//            Window window = getWindow();
//
设置修改状态栏
//            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//
设置状态栏的颜色,和你的app主题或者标题栏颜色设置一致就ok了
//            window.setStatusBarColor(getResources().getColor(R.color.colorPrimary));
//        }

    //***********修改状态栏颜色方法二:
//        if(Build.VERSION.SDK_INT >= 21) {
//            View decorView = getWindow().getDecorView();
//
设置全屏和状态栏透明
//            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
//                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
//            getWindow().setStatusBarColor(Color.TRANSPARENT);
//        }


//******设置状态栏文字颜色及图标为深色
// getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

**************隐藏状态栏,如果设置了状态栏透明,这个隐藏状态栏就失效了
//        View decorView = getWindow().getDecorView();//获取屏幕的decorView
//        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);//设置全屏,也就隐藏了状态栏

        //*****************设置状态栏半透明
//        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        //*********************设置状态栏透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(Color.TRANSPARENT);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }

        initView();
    }

*********需要在activity的布局中设置android:fitsSystemWindows="true",如果不设置,标题栏就会上移动。


在布局的最外层(也就是activity_mian.xml中)设置 android:fitsSystemWindows="true",会在屏幕
最上方预留出状态栏高度的padding,如果没有这个设置,toolBar会把状态栏的位置占据(如果没有toolBar,
让view的一部分页面进入状态栏的位置,和状态栏层叠,状态栏在最上面,达到沉浸式的效果)
**********在style中设置:参考:https://blog.csdn.net/sunshine199221/article/details/61919890
https://blog.csdn.net/smileiam/article/details/73603840
<style name="AppTheme.ImmersiveThemewitletext">  
        <!-- true: status栏会有一层阴影;false: status栏没有阴影;当该项为true时,则name="android:windowLightStatusBar"设置无效,永远为白色 -->  
        <item name="android:windowTranslucentStatus">false</item>  
        <!-- 使底部导航栏透明 -->  
        <item name="android:windowTranslucentNavigation">true</item>  
        <!-- 给status栏设置透明颜色 -->  
        <item name="android:statusBarColor">@android:color/transparent</item>  
        <!-- true: status栏的图标和文字为黑色;false: sstatus栏的图标和文字为白色 -->  
        <item name="android:windowLightStatusBar">true</item>  
    </style>
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值