关于Android StatusBar 通顶问题的讨论和解决方案

在android开发中,大家一定受到过不少StatusBar通顶问题的困扰。由于Android没有在xml布局构造器中提供类似ios开发中safearea一类的辅助线,而且android碎片化过于严重。导致没有办法一劳永逸的解决StatusBar的通顶问题(本篇博客其实也并没有在为4.4提供解决方案,4.4的通顶问题可以参考其他博客)。

在针对通顶问题进行一段时间的研究后,发现其实官方有对通顶给出过解决方案,只是没有给出的那么直接。本篇文章提供的方案很简单,并不需要去动态反射获取StatusBar高度。也不需要从Theme里面拿StatusBar字段,更不需要创建一个透明的view。只需要依靠fitsystemwindow就可以解决大部分新手机上的通顶问题,原理其实很简单,但是没有看到网上提出对应的解决方案。就把方案方上来了。

废话不多说,看效果:

布局文件: 





    

        
    


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)
    }

}

关于Android StatusBar 通顶问题的讨论和解决方案_第1张图片

 

删除第二个constraintlayout中的:

android:fitsSystemWindows="true"

关于Android StatusBar 通顶问题的讨论和解决方案_第2张图片

思路其实很简单就是让系统去配置是否需要fitSystemWindow从而改变该view的子view的排列方式

你可能感兴趣的:(Android,移动开发)