【Android】NoActionBar主题/和状态栏设置
描述
原生创建一个界面的时候,AS会给出一个比较丑的样式。
比如:
- 没有沉浸式状态栏
- 不好看的头部ActionBar
下面是一些解决方案:
- 通过改主题文件实现ActionBar
- 通过三方库实现美化状态栏
实现
一,去掉头部ActionBar
-
首先把
Theme
文件中做一个 NoActionBar(继承已有的就好了)1
2
3
4<resources xmlns:tools="http://schemas.android.com/tools">
<!-- 不带头部ActionBar的主题-->
<style name="SuperUI.NoActionBar" parent="Theme.MaterialComponents.DayNight.NoActionBar"/>
</resources> -
在
AndroidManifest
里面更换原来的主题文件:- 如果想整个APP都是 NoActionBar 就换在
Application
上: - 如果只是想某个Activity 是无头部Action Bar就放在对应 Activity 的上:
- 如果想整个APP都是 NoActionBar 就换在
这个时候 NoActionBar 就实现了。
插一句,这里的实现原理其实很简单,两行代码:
1 | </style> |
二,状态栏设置
到现在这步,状态栏显得很突兀。
我们想实现界面沉浸到状态栏效果。
这里我们用腾讯的 QMUI。
这个库很厉害,建议深入了解
引入三方库,同步。
1 | implementation 'com.qmuiteam:qmui:2.0.1' |
沉浸状态栏
1 | //设置沉浸式状态栏 |
看下效果图:
现在沉浸状态栏实现了,但是这个状态栏的文字因为颜色和Activity背景混了。
不好,处理一下。
状态栏文字设置
思路:
如果此时为浅色模式(界面是白的),设置状态栏文字为黑的。
如果此时为深色模式(界面是黑的),设置状态栏为白的。
判断此时是不是黑色界面的方法:
1 | public static boolean isDark(Context context) { |
然后就直接 if 判断:
1 | if (isDark(this)) { |
整体代码:
1 |
|
结果:
终于顺眼了。
总结
我们如果很多地方都想要这种效果就可以封装一个工具类
SuperStatusBarUtil
1 | package com.example.testandroid.superutils; |
然后用到的Activity直接调用就可以了。
1 | //状态栏设置 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMC_Blog!