Android 状态栏透明的一些小结
程序员文章站
2022-06-05 13:18:05
...
Android 状态栏颜色修改,在不同版本上有不同的特性,下面做个小结:
几个相关属性说明
1、4.4新增属性
android:fitsSystemWindows 是否为子空间预留不久
android:windowTranslucentStatus 状态栏是否透明
(1)根据官方文档,如果某个View 的fitsSystemWindows 设为true,那么该View的padding属性将由系统设置,用户在布局文件中设置的
padding会被忽略。系统会为该View设置一个paddingTop,值为statusbar的高度。fitsSystemWindows默认为false。
(2)4.4开始可以设置状态栏是否透明,透明效果如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".ScrollingActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="false"
android:background="#ff00F8"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_scrolling" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|end"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
(3)上面通过设置 android:fitsSystemWindows=true 来让布局给预留状态栏的高度,所以可以看得状态栏变灰色;
(4)如果将android:fitsSystemWindows=true ,布局文件会向上移,占用状态栏空间
其他详细特性可以参考:
https://www.jianshu.com/p/5cc3bd23be7b
2、5.0新增属性
colorPrimary 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色
colorPrimaryDark 应用的主要暗色调,statusBarColor默认使用该颜色
statusBarColor 状态栏颜色,默认使用colorPrimaryDark
5.0以上默认状态栏会采用在style.xml 设置的主题颜色
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
(1)如果设置了 android:windowTranslucentStatus =true ,状态栏将透明,处理情况同 上面4.4 的情况;
(2)可以通过设置statusBarColor 设置颜色
其他特性参考
https://blog.csdn.net/ddddwwww2/article/details/72868376
参考: