我们看下android4.4的手机沉浸式状态栏的效果图:

让所有的activity继承baseActivity,然后在baseactivity里面为重复的高度添加一个状态栏高度的view将toolbar顶下去即可。

如果你的activity没有继承baseActivity,那么你就只有在每个Activity的setContentView后面添加如下代码

看不懂可以联系我。

  @Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//应用竖直屏幕显示setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);setContentView(getLayoutResId());//判断api19版本,填充状态栏高度这个方法一定要在setContentView后调用if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {//填充重叠的部分addMoreView();}initView(savedInstanceState);if (this instanceof IBaseView) {mPresenterImpl.onAttach((V) this);}}/*** 添加一个和状态栏一样高度的view将toolbar顶下去*/private void addMoreView() {//获取windowphone下的decorViewViewGroup decorView = (ViewGroup) getWindow().getDecorView();int count = decorView.getChildCount();//判断是否已经添加了statusBarViewif (count > 0 && decorView.getChildAt(count - 1) instanceof TextView) {decorView.getChildAt(count - 1).setBackgroundColor(Color.parseColor("#8B1C21"));} else {//新建一个和状态栏高宽的viewView statusView = createStatusBarView();decorView.addView(statusView);}ViewGroup rootView = (ViewGroup) ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);//rootview不会为状态栏留出状态栏空间ViewCompat.setFitsSystemWindows(rootView, true);rootView.setClipToPadding(true);}/*** 创建一个与状态看一样高度的view** @return 返回view*/private View createStatusBarView() {// 绘制一个和状态栏一样高的矩形TextView statusBarView = new TextView(this);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());statusBarView.setLayoutParams(params);statusBarView.setBackgroundColor(Color.parseColor("#8B1C21"));return statusBarView;}/*** 拿到状态栏的高度** @return 返回高度*/private int getStatusBarHeight() {Class c;try {c = Class.forName("com.android.internal.R$dimen");Object obj = c.newInstance();Field field = c.getField("status_bar_height");int x = Integer.parseInt(field.get(obj).toString());LogUtils.e("打印高度:" + getResources().getDimensionPixelSize(x));return getResources().getDimensionPixelSize(x);} catch (Exception e) {e.printStackTrace();}return 0;}

在看下修复后android4.4手机的效果:

感谢原博主:https://www.jianshu.com/p/752f4551e134

Android开发之android4.4沉浸式状态栏后toolbar和状态栏重复(重叠,覆盖)的bug相关推荐

  1. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

    今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可以 ...

  2. android 工具栏沉浸 下拉,如何在Android应用中实现一个沉浸式状态栏效果

    如何在Android应用中实现一个沉浸式状态栏效果 发布时间:2020-12-08 17:04:42 来源:亿速云 阅读:151 作者:Leah 这篇文章将为大家详细讲解有关如何在Android应用中 ...

  3. Android开发之旅:应用程序基础及组件

    --成功属于耐得住寂寞的人,接下来几篇将讲述Android应用程序的原理及术语,可能会比较枯燥.如果能够静下心来看,相信成功将属于你. 引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android ...

  4. Android开发之旅:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...

  5. Android开发之无bug滑动删除源码(非第三方库)

    Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...

  6. android md5加密登录,Android开发之MD5加密

    将字符串进行MD5加密,返回加密后的字符串 public static String encode(String password) { try { StringBuffer sb = new Str ...

  7. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序   在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...

  8. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

  9. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

最新文章

  1. NHibernate使用时,不能返回自己的异常的解决办法
  2. hql与sql的区别
  3. SpringMVC的数据响应-页面跳转-返回ModelAndView3(应用)
  4. java 文件分隔_java 实现大文件分隔成多个小文件
  5. 禁售苹果手机_苹果、华为供应商工厂突发火灾!浓烟冲天
  6. 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
  7. 【深入理解编译】深入理解编译
  8. js中事件捕获和事件冒泡
  9. 生物聚集细胞生物化学反应的组织者Biomolecular condensates: organizers of cellular biochemistry
  10. 博客园博客转至个人网站博客声明
  11. 二十一天学通VC++之创建用户界面线程
  12. 复制粘贴之后出现问号怎么办_网页没办法复制粘贴?老司机传授这3招太赞了,全网任意免费复制...
  13. 如何创建和使用文档库 - [MOSS 2007应用日记]
  14. setup factory制作安装包卸载出错“Invalid start mode:archive filename”
  15. ZKT门禁机标准联接线(按键开关经过卡机)
  16. Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(下篇)
  17. Opencv C++图像处理(全)
  18. BZOJ 4043 [Cerc2014] Vocabulary
  19. 用智能ABC关闭程序
  20. 错误 编码(此代码是错误的)

热门文章

  1. 基于verilog的洗衣机设计
  2. matlab目标支持包安装问题,配置系统目标文件 - MATLAB Simulink - MathWorks 中国
  3. 改镜像_镜像制作大法
  4. php interbase,PHP: Firebird/InterBase - Manual
  5. animation停留_这些Animation动画技巧与细节你知道么
  6. 南京信息工程大学c语言实验十报告,南京信息工程大学2014年C语言程序设计实验内容(全部).doc...
  7. php5.3.3php5.4如何支持zend,PHP5.3、PHP5.4下安装ZendOptimizer或Zend Guard Loader的方法
  8. pyecharts geo_pyechartstableau可视化分析案例+分析思路
  9. 阅读王概凯老师架构漫谈系列总结
  10. 全国大型水库水情数据汇总2018