Intro 大话安卓是一个Android技术分享平台,聊聊Android开发那些事,不止于Android。。。
本文作者本文有N氧化碳投稿,N氧化碳大神曾自己开发了一款N氧化碳桌面浏览器,感兴趣的童鞋可百度下载使用。N氧化碳大神目前从事Android客户端开发,代表作品有“花哪儿”,目前在各大应用市场可下载,前段时间曾被老罗直播推荐使用。
N氧化碳的博客地址:
 
http://www.jianshu.com/u/9262245aa99d
01
BottomSheetDialog是什么?
简单的说就是基于屏幕底端的弹出式布局,上下拖拽就可以实现打开到全屏或关闭的效果,具体的来看下网易云音乐和微信中的你就明白它是个啥了
使用方法也很简单,先在Gradle中添加:
再添加代码就能用了:
可以看到这玩意的本质是一个对话框(其实还用FrameLayout可以用有兴趣的去研究下)可是,无论如何这个对话框却不是沉浸式的,该如何是好?
02
BottomSheetDialog沉浸式的探索
首先我就不提那一圈又是自定义Theme的又是给添加WindowManagerFLAG的有多蛋疼了,前者根本无效,后者沉浸式倒是沉浸式了然而你在状态栏给我留着个灰条闹哪样
好吧废话不多说上代码吧
首先基于上边说的后者,能沉浸式但有灰条的,起码成功了一半,先上改良后的代码:
好了,沉浸式了,但两个问题,一是灰条怎么去除,二是这布局拖上天后状态栏下边还是灰条透明的呀,不会插在状态栏后边口牙,这画风不对口牙!
添加了flag的BottomSheetDialog
好吧回到问题,Android 5.x+的状态栏灰条如何去除.....
嗯,如果你去百度Google找,congratulation,没用。
至于原因,去试试就知道了
那么该怎么办呢?
答案如下,重写BottomSheetDialog。以下是重写BottomSheetDialog的全部代码,将布局高度设置为全屏幕高度:
配合调用代码:
看下效果,嗯,结果不错,完美解决:
刚打开的截图
全屏后
至于为啥改了个高度就解决了灰条问题?因为在Google的Android社区里头一群老外也在讨论这事儿,有人提到修改就可以搞定了...这什么逻辑。好吧我会继续探索它的原因,不过起码问题是解决了,有需要的可以用上边的代码直接沉浸式BottomSheetDialog,希望对大家有所帮助。 
 
原讨论贴戳这里(请自备梯子):
https://code.google.com/p/android/issues/detail?id=202691