Android 沉浸标题栏状态栏

首先设置状态栏透明 super.onCreate之后调用

    protected void requestTranslucentStatusBar() {
        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);
    }

注意不要设置android:fitsSystemWindows="true" 或 setFitsSystemWindows(true)

不然根布局就填充了状态栏(约等于paddingTop="状态栏高度")

如果设置了就会是这样 根布局占用状态栏 而不是标题栏(原谅咱可爱的状态栏) 

布局代码就不贴了 不难写

 设置完状态栏透明就可以适配标题栏了 也不麻烦我已经写好了


    /**
     * 标题适配状态栏 在进行此设置前需要将当前Activity的状态栏设置为透明
     *
     * @param titleBar 标题布局
     */
    public static void titleBarAdaptsToStatusBar(ViewGroup titleBar) {
        Context context = titleBar.getContext();
        //获取状态栏高度
        int statusHeight = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusHeight = context.getResources().getDimensionPixelSize(resourceId);
        }
        //适配高度
        ViewGroup.LayoutParams params = titleBar.getLayoutParams();
        params.height += statusHeight;
        //模拟setFitsSystemWindows(ture)
        titleBar.setPadding(titleBar.getPaddingLeft(),
                titleBar.getPaddingTop() + statusHeight,
                titleBar.getPaddingRight(),
                titleBar.getPaddingBottom());
    }

调用

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.root_layout);

        //状态栏透明
        requestTranslucentStatusBar();
        //标题栏适配状态栏
        ViewUtils.titleBarAdaptsToStatusBar(findViewById(R.id.setting_title_bar));

        initView();
    }

好了 效果图

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值