由于项目使用到toolbar,所以研究了一下。
首先,设置apptheme
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!--状态栏颜色,仅5.0有用--> <item name="colorPrimaryDark">@color/background_main</item> <!--Toolbar颜色--> <item name="colorPrimary">@color/background_toolbar</item> <!--返回键样式--> <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowToggle</item> </style>
发现这种效果,在android studio的预览里面显示正常,但是实际运行到4.4上,状态栏还是黑色的。
在网上找了许久,找到了一些资料。
在当前应用透明主题的activity中的onCreate中添加如下代码
//设置状态栏透明 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
运行之后app的view直接从屏幕顶端开始布局了。
于是在layout里设置该两个属性
android:fitsSystemWindows="true" android:clipToPadding="true"
再次运行之后,状态栏透明了,状态栏颜色应用现在app主题颜色。
又强制设置主题颜色
在apptheme中,添加
<item name="android:windowBackground">@color/background_main</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
最后再次运行,发现4.4的程序状态栏可以有我想要的结果了。
如果大神们有好的方法,也可以指导一下。