1. 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题
最近接了一个外包开发的项目, 在这个项目上做UI调整和新功能开发。遇到一个getBackground().setAlpha 改变背景颜色的问题。晚上提交完代码, 第二天运行发现项目中的所有对话框(dialog,popwindow)背景全部变成透明效果了。然后就感觉肯定是不小心改变主题样式什么的。但是查看所有的提交记录都没有发现有关 theme 和Style 相关的提交记录。然后回滚到没问题的版本一个文件一个文件的对比。
用了一上午的时间发现无意间改了这个文件
因为这个色值和整体的项目主题不搭, 随手就改了,导致整个项目的 dialog和popwindow 都变成了透明效果。
因为印象中看到过这样的设置, 所以感觉肯定是这的问题。
果然在网上找了资料才知道,在布局中多个控件同时使用一个资源的时候,这些控件会共用一个状态,例如ColorState,如果你改变了一个控件的状态,其他的控件都会接收到相同的通知。这时我们可以使用mutate()方法使该控件状态不定,这样不定状态的控件就不会共享自己的状态了。
llSearch.getBackground().mutate().setAlpha(0);
参考:https://blog.youkuaiyun.com/myatlantis/article/details/49336587