显示/隐藏状态栏,activity重新布局解决方法

本文介绍如何在Android应用中控制状态栏的显示与隐藏,包括在onCreate()方法中设置全屏显示、移除状态栏限制及调整布局等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在onCreate()中加入

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
如果不加这两句话,显示状态栏会重新布局。


隐藏状态栏:
 WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
            getWindow().setAttributes(lp);

显示状态栏:
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);

参考:
https://www.zhihu.com/question/19760889


### 将Android显示隐藏状态栏功能封装成方法 在Android开发中,可以通过调用`View.setSystemUiVisibility(int)`方法来控制状态栏显示隐藏行为。下面分别定义两个独立的方法用于完成这一需求。 #### 方法一:隐藏状态栏 此函数接收一个参数即当前Activity实例对象,内部逻辑基于传入的对象操作其关联窗口属性从而达到隐藏效果。 ```java public static void hideStatusBar(Activity activity){ if(activity == null || activity.getWindow() == null)return ; final View decorView = activity.getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;// 设置全屏标志位 decorView.setSystemUiVisibility(uiOptions); // 同时也需要隐藏ActionBar以匹配整体视觉风格 ActionBar actionBar = ((AppCompatActivity)activity).getSupportActionBar(); if(actionBar!=null){ actionBar.hide(); } } ``` #### 方法二:显示状态栏 同样地,我们也可以构建另一个辅助工具类成员函数负责恢复默认界面布局设定包括重新显现顶部通知区域以及激活动作条组件等操作。 ```java public static void showStatusBar(Activity activity){ if(activity == null || activity.getWindow()==null )return ; final View decorView=activity.getWindow().getDecorView(); int uiOptions=View.SYSTEM_UI_FLAG_VISIBLE ;// 清除任何先前指定过的特殊标记选项 decorView.setSystemUiVisibility(uiOptions); // 显示ActionBar以便提供一致性的用户体验 ActionBar actionBar=((AppCompatActivity)activity ).getSupportActionBar (); if(actionBar !=null ){ actionBar.show(); } } ``` 以上两段程序片段展示了如何简洁有效地实现对移动操作系统原生控件——状态栏能见度切换的支持能力。值得注意的是,在实际项目部署过程中还需要考虑更多边界情况比如是否存在导航键硬件实体按键等因素影响最终呈现样式等问题[^1]。 另外一种更现代化的做法涉及到使用WindowInsetsController API (from Android 10 onwards),它可以更加精细地调整各种类型的沉浸式体验设置而无需依赖传统的flags机制[^2]。然而对于较老版本则仍然推荐沿用旧版方案直至完全淘汰为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值