Android令人困惑的WindowBackground

2021-02-08  本文已影响0人  彼时年少_f3d1

在做右滑退出Activity时发现一个诡异的现象:Activity出现了一个黑底。检查了一下,theme中windowbackgound设成了透明色了,布局中也没有设置黑色,嗯。。会不会是什么地方更改了window背景,于是遍历把view树的背景都清除了,一运行还是黑色。。

无奈只能去看源码了,经过层层摸瓜,终于发现了其中的奥妙,在DecorView中有这么一段

如果windowBackground为不为null(我遇到的case应该是一个色值为透明的ColorDrawable),则enforceNonTranslucentBackground,这个方法是什么鬼

于是乎,透明色变成了黑色!问题终于找到了!

要解决问题,必须不能走到强制色值不透明的地方,问题就出在window.isTranslucent返回了false,然后这个值只能通过theme去指定,改了之后,问题解决了。。。

另外当设置了空的windowBackground,会从主题中去取windowBackground和backgroundFallbackDrawable,当这两个都为null时,会创建一个纯黑色的ColorDrawable。

这也解释了为什么对window设置windowBackground为空时不生效的问题!

上一篇下一篇

猜你喜欢

热点阅读