状态栏在themes.xml文件里面添加以下两条可以将状态栏设置为透明状态item nameandroid:statusBarColorandroid:color/transparent/item item nameandroid:windowLightStatusBartrue/item这两天只做一件事把状态栏本身颜色变透明不会强制让页面布局向上延伸盖住状态栏。页面能不能填充到状态栏由根布局类型 fitsSystemWindows控制。所以我使用时候ConstraintLayout布局生效了LinearLayout没有生效。两者底层区别ConstraintLayout 布局规则子控件约束到 parent 最顶端会主动向上侵入状态栏区域Constraint 是坐标约束布局layout_constraintTop_toTopOfparent强制控件贴屏幕最顶部无视状态栏分隔背景会向上铺满状态栏。LinearLayout流式顺序排列默认从状态栏下方开始绘制不会主动向上延伸加上居中 全局 padding顶部空白底色直接露出来解决LinearLayout布局下状态栏和主题颜色不同时候有以下两种方法根 LinearLayout 加两行属性LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent android:gravitycenter android:padding16dp android:backgrounddrawable/ic_backguand android:orientationvertical !-- 新增这两行 -- android:fitsSystemWindowsfalse android:clipToPaddingfalseclipToPaddingfalse允许布局背景绘制到 padding 区域外向上填充状态栏。强制布局顶到屏幕最顶端import android.view.WindowManager override fun onCreate(savedInstanceState: Bundle?) { window.setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS ) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }不要给 LinearLayout 设置fitsSystemWindowstrue这个属性会自动在顶部加状态栏高度 padding如果不想修改LinearLayout布局可以在主题彻底统一透明状态栏style nameBase.Theme.Demo parentTheme.Material3.DayNight.NoActionBar item nameandroid:statusBarColorandroid:color/transparent/item item nameandroid:windowLightStatusBartrue/item !-- 新增两行关键属性 -- item nameandroid:windowDrawsSystemBarBackgroundstrue/item item nameandroid:windowTranslucentStatustrue/item /stylewindowTranslucentStatus状态栏完全透明页面背景向上填充windowDrawsSystemBarBackgrounds允许页面绘制覆盖状态栏区域
实现状态栏透明
发布时间:2026/7/2 8:08:51
状态栏在themes.xml文件里面添加以下两条可以将状态栏设置为透明状态item nameandroid:statusBarColorandroid:color/transparent/item item nameandroid:windowLightStatusBartrue/item这两天只做一件事把状态栏本身颜色变透明不会强制让页面布局向上延伸盖住状态栏。页面能不能填充到状态栏由根布局类型 fitsSystemWindows控制。所以我使用时候ConstraintLayout布局生效了LinearLayout没有生效。两者底层区别ConstraintLayout 布局规则子控件约束到 parent 最顶端会主动向上侵入状态栏区域Constraint 是坐标约束布局layout_constraintTop_toTopOfparent强制控件贴屏幕最顶部无视状态栏分隔背景会向上铺满状态栏。LinearLayout流式顺序排列默认从状态栏下方开始绘制不会主动向上延伸加上居中 全局 padding顶部空白底色直接露出来解决LinearLayout布局下状态栏和主题颜色不同时候有以下两种方法根 LinearLayout 加两行属性LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent android:gravitycenter android:padding16dp android:backgrounddrawable/ic_backguand android:orientationvertical !-- 新增这两行 -- android:fitsSystemWindowsfalse android:clipToPaddingfalseclipToPaddingfalse允许布局背景绘制到 padding 区域外向上填充状态栏。强制布局顶到屏幕最顶端import android.view.WindowManager override fun onCreate(savedInstanceState: Bundle?) { window.setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS ) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }不要给 LinearLayout 设置fitsSystemWindowstrue这个属性会自动在顶部加状态栏高度 padding如果不想修改LinearLayout布局可以在主题彻底统一透明状态栏style nameBase.Theme.Demo parentTheme.Material3.DayNight.NoActionBar item nameandroid:statusBarColorandroid:color/transparent/item item nameandroid:windowLightStatusBartrue/item !-- 新增两行关键属性 -- item nameandroid:windowDrawsSystemBarBackgroundstrue/item item nameandroid:windowTranslucentStatustrue/item /stylewindowTranslucentStatus状态栏完全透明页面背景向上填充windowDrawsSystemBarBackgrounds允许页面绘制覆盖状态栏区域