Android app内容延伸到状态栏/导航栏(页面内容全屏展示)小记

  • 首先要明确一下Android窗口的感念:
    系统级窗口:手机屏幕所有可见部分,我们常说的状态栏和导航栏都是系统级的窗口内容;
    应用级窗口:Android中的Activity所展示的部分,一般不包含状态栏和导航栏;
1.设置window占满全屏&背景透明:
// Theme设置
<!--window占满全屏-->
<item name="android:windowFullscreen">true</item>
<!--window设置背景-->
<item name="android:windowBackground">@color/transparent</item>
2.设置状态栏和导航栏透明:
// Theme设置
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>

// 代码设置
getWindow().setStatusBarColor(Color.TRANSPARENT);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
  • 此时状态栏和导航栏透明,可见状态栏和导航栏区域背景为桌面背景
  • 接下来需要将页面内容延伸到状态栏和导航栏
3.设置页面内容延伸到系统状态栏和导航栏:
// Theme设置
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

// 代码设置
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
4.设置系统自动为视图添加一个状态栏/导航栏高度的padding:
rootView.setFitsSystemWindows(true);
//或者xml view标签加入
android:fitsSystemWindows="true"
以上只是内容延伸到状态栏和导航栏,如需全屏展示(例如:启动页)请参见Google官方启用全屏模式:https://developer.android.com/training/system-ui/immersive?hl=zh-cn
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容