关于Android StatusBar 通顶问题的讨论和解决方案
16lz
2021-01-23
在android开发中,大家一定受到过不少StatusBar通顶问题的困扰。由于Android没有在xml布局构造器中提供类似ios开发中safearea一类的辅助线,而且android碎片化过于严重。导致没有办法一劳永逸的解决StatusBar的通顶问题(本篇博客其实也并没有在为4.4提供解决方案,4.4的通顶问题可以参考其他博客)。
在针对通顶问题进行一段时间的研究后,发现其实官方有对通顶给出过解决方案,只是没有给出的那么直接。本篇文章提供的方案很简单,并不需要去动态反射获取StatusBar高度。也不需要从Theme里面拿StatusBar字段,更不需要创建一个透明的view。只需要依靠fitsystemwindow就可以解决大部分新手机上的通顶问题,原理其实很简单,但是没有看到网上提出对应的解决方案。就把方案方上来了。
废话不多说,看效果:
布局文件:
<?xml version="1.0" encoding="utf-8"?>
activity(Kotlin):
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN setContentView(R.layout.activity_main) }}
删除第二个constraintlayout中的:
android:fitsSystemWindows="true"
思路其实很简单就是让系统去配置是否需要fitSystemWindow从而改变该view的子view的排列方式
更多相关文章
- 转载——Android大图片裁剪终极解决方案
- Android实现推送方式解决方案 (转1)
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一
- Android 软件盘之使特定布局保持在软键盘之上
- Android App 反应卡顿解决方案
- Android 动态解析网络布局
- 深入探索Android布局优化(上)