Android 透明状态栏
在 android 4 系统中可以设置透明状态栏。
但在 android 5.0 以上遇到问题。但问题是可以解决的,需要正确的设置 theme。
但是需要注意一点,5以上可以修改 status bar 的背景颜色,但不能有和 4.4 一样的半透明渐变效果。所以透明的状态栏下,如果整个页面是白色的,状态栏的图标将不可见。
Theme :
<style name="AppTheme" parent="AppTheme.Base"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowTranslucentStatus">false</item> </style>
这段代码使得状态栏变成了透明,但是奇怪的是,应用底部被虚拟键盘覆盖了。
解决办法是在 layout 里添加一行:
android:fitsSystemWindows="true"
看需要有时也会在顶部加入一个负的 margin 来让界面更紧凑美观
android:layout_marginTop="-25dp"
Android 6 可以让状态栏上的图标和文字变灰色。
<item name="android:windowLightStatusBar">true</item>
不用 style 的话可以用代码:
View yourView = findViewById(R.id.your_view); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (yourView != null) { yourView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } }
移动开发者