在家搞自己的APP时,遇到奇怪的问题,如标题描述:我先打开的Activity A,点A上的某个控件打开Activity B,点B上的某个控件调起popupwindow,这里popupwindow有段设置半透明的代码,就是让背景变灰的效果,在调起的那一刻我居然透过B看到了A。什么鬼啊这是? 然后我翻找老版本的APP运行,没问题啊,有没有搞错? 代码一样的,老的没问题?新的有问题? 然后一时间蒙了,问度娘吧,只找到一个与我有相似问题的解答,不对,其实并不是解答,就是挂个问题在上面而已,底下有条回复说注销掉设置透明的代码,说了等于没说,注销了还搞个毛线,我要的就是这个变灰的效果。虽然问度娘无果,但是可以确定问题是出在这个设置 透明度 的过程,然后我冷静的想了想,老代码 到 新代码 的更新过程,我TM到底都干了些什么? 冷静还是有用的,TM的居然还真让我想通了,就是这个鬼在搞事:
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowIsTranslucent">true</item>
之前为了在另外的控件上达到透明效果,在activity的theme上增加了上面这个参数,由于对应的theme是全局的,改变了所有引用这个theme的activity。现在好了问题找到了,解决办法就是找到对应的theme去掉这个参数,或者新建个theme给需要弹popupwindow的activity用就可以了。
另外在还出现个问题,B调起过popupwindow过后,返回到A,在这个过程会出现短暂的黑屏,这个网上有解决方法:
调起时 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
退出时 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
PS:我在退出时,又Add了一次,能不黑屏吗?
记录一下,免得下次又踩到这个坑里了!