首先在基类BaseActivity或BaseFragment中写下以下代码,记得要在setContent之前调用
public abstract class BaseActvity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doBeforeSetcontentView();
setContentView(getLayoutRes());
AppManager.addActivity(this);
initView();
}
重点是doBeforeSetcontentView方法,在里面会有一些操作(无标题或设置竖屏或设置状态栏背景色之类的)
/**
* 设置沉浸式菜单,无标题,屏幕方向等
*/
protected void doBeforeSetcontentView() {
// 无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
SetStatusBarColor();
SetTranslanteBar();
}
/**
* 着色状态栏(4.4以上系统有效)
*/
protected void SetStatusBarColor() {
StatusBarCompat.setStatusBarColor(this, ContextCompat.getColor(this, R.color.colorPrimary));
}
/**
* 着色状态栏(4.4以上系统有效)
*/
protected void SetStatusBarColor(int color) {
StatusBarCompat.setStatusBarColor(this, color);
}
/**
* 沉浸状态栏(4.4以上系统有效)
*/
protected void SetTranslanteBar() {
StatusBarCompat.translucentStatusBar(this);
}
目前的操作大概只是介绍如何设置沉浸式和改一下状态栏背景色。
如果要更改状态栏文字颜色,借助第三方写好的工具比较方便就好了,这里推荐这个工具
StatusBarUtil,依赖是
compile 'com.github.crossoverone:StatusBarUtil:1.3.3'//会不定时更新,请及时更新
用法是:其实我用的时候第二个参数设置沉浸式没有效果,,不过第三个设置文字颜色倒是可以的。结合上面使用即可了
// 第二个参数是是否沉浸,第三个参数是状态栏字体是否为黑色。
StatusUtil.setSystemStatus(this, false, true);
参考文章是这个android沉浸式状态栏 轻量 简便