DialogFragment使用过程遇到的坑

3,402 阅读1分钟

DialogFragment使用过程遇到的坑

dialogfrag-1
dialogfrag-2

想实现下面的效果,导航栏不被遮挡,然后看了网易云音乐的实现方式,会导致导航栏变灰色,他的实现方式大概是设置的不是全屏的dialogfragment实现的。

原因

先说下为什么第一张图导航栏的三个图标在文字的上面,因为我们调用transparencyBar时候会把导航栏和状态栏全部都变成透明FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS

其次dialogFragment和Activity在theme中有一个变量是不一样的,windowIsFloating。

首先,如下图,dialog设置的是wrap_content,但是我这里设置成了match_parent

-w960

如果是dialog的话,layoutparams设置为全屏区域,会导致绘制的是全屏区域,不考虑导航栏和状态栏,而activity即使设置了也不会draw到导航栏里。

-w1003

结论

如果要设置全屏导航栏,需要把windowIsFloating改成false。