发表于: 2018-08-09 23:58:22
1 1022
一、今天完成的事情
修改了状态栏的背景颜色,使之与整个界面协调一
参考资料:由沉浸式状态栏引发的血案
Translucent System Bar是从Android 4.4开始引入的特性,为了提高兼容性,不可以直接引用这个特性,需要为不同的SDK设置相应的values文件夹,让系统自己去判断并选择合适的Theme。
在每个values文件夹中都创建一个styles.xml文件,在每个styles.xml中创建一个同名Theme,并对android:windowTranslucentStatus和android:windowTranslucentNavigation这两个属性进行设置,如下所示:
values/styles.xml
<style name="ColorTranslucentTheme" parent="AppTheme">
</style>
values-v19/styles.xml
<style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
values-v21/style.xml
这里需要设置系统状态栏的颜色
<style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:statusBarColor">@color/blue_5fc0cd</item>
</style>
然后到AndroidManifest.xml中为Activity设置Theme
<activity android:name=".RegisterActivity"
android:theme="@style/ColorTranslucentTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最后在activity对应的layout中设置android:fitSystemWindows为true,这样可以防止状态栏和主界面发生重叠
android:fitsSystemWindows="true"
二、明天计划的事情
1.完成昨天未完成的计划:完成登录界面、为控件设置点击事件;
2.学习验证码倒计时功能
三、遇到的问题
1.在输入windowTranslucentStatus时,习惯性地在window后面加了个s,检查了好几遍才发现这个错误。
2.不是很明白android:windowTranslucentStatus和android:windowTranslucentNavigation这两个属性的原理。
四、收获
学会了如何设置状态栏背景颜色
评论