AlertDialog 与 PopupWindow的 区别
来源:互联网 发布:java数据结构编程 编辑:程序博客网 时间:2024/05/22 02:22
最近在写一个小的项目,点击按钮,颜色变换,并下发命令到MCU,然后去按车机实体键,MCU返回数据后,再次改变按钮颜色,界面上有多个按钮需如此设置,如同设置快捷键。当实体键被设置时,弹框提示 是否覆盖。而问题就出现在这里,也是我觉得的AlertDialog 与PopupWindow 很明显的一个区别。
首先,我的按钮(ImageButton)的背景色是通过selector去配置的,如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/swl_btn_default_small_normal" /> <item android:state_enabled="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/swl_btn_default_small_pressed" /> <item android:state_enabled="true" android:state_selected="true" android:drawable="@drawable/swl_btn_default_small_selected" /> <item android:state_enabled="false" android:drawable="@drawable/swl_btn_default_small_success" /></selector>
然后,颜色的更换,通过button.setSelected(false);button.setPressed(true); 这些方法来切换颜色显示。效果都是OK的,杠杠的。可是,当我用 AlertDialog弹框提示的时候,AlertDialog一弹出,按钮的颜色全部复原为swl_btn_default_small_normal这个背景色,然后关闭弹框后,也还是那个颜色,弹框之前的颜色全部丢失了,看着真心让人惆怅。几经查找,觉得问题应该是出在selector上面了,弹框出来后,按钮的状态发生了变化,系统自动处理了,将按钮颜色 设置为swl_btn_default_small_normal(个人猜测,是这样,若那位大牛知道机制、或者有其他的见解,就科普交流下哈)。因此,我想要实现,弹框 弹出、消失后,颜色保留,那么我自己得维护一个状态数据集,觉得太过麻烦,就想到了PopupWindow,果然,他,没有让我失望,完全是我想要的效果。
不过,在使用的时候,还是遇到了个问题,PopupWindow 弹出,焦点阻塞的问题,我是想用PopupWindow 模仿AlertDialog那样,弹出后,其他控件不能获得焦点,不能接受点击事件,可是,不管我设置 PopupWindow 的背景色,或者 mPopupWindow.setOutsideTouchable(false); 当PopupWindow 弹出后,其他的按钮,可以照常接受点击事件,让人纠结啊,惆怅啊。后面百度,看到一个文章,正好适合我,也很巧妙,链接如下:
利用Android PopupWindow 实现自定义弹出层
要阻塞后面按钮的事件,可以将PopupWindow 全屏处理,这样就可以遮盖下面的View,实现AlertDialog 那样的阻塞效果。so easy!
- AlertDialog 与 PopupWindow的 区别
- PopupWindow与AlertDialog区别
- PopupWindow和AlertDialog的区别
- popupWindow的创建和与alertDialog的区别
- PopupWindow与AlertDialog的使用
- android 中popupWindow与AlertDialog区别
- PopupWindow和AlertDialog的使用和区别
- PopupWindow和AlertDialog区别
- PopupWindow和AlertDialog区别
- PopupWindow和AlertDialog区别
- PopupWindow和AlertDialog区别
- PopupWindow和AlertDialog区别
- PopupWindow和AlertDialog区别
- android PopupWindow和AlertDialog区别
- Android的对话框有两种:PopupWindow和AlertDialog区别
- Android AlertDialog和PopupWindow使用和区别
- PopupWindow,AlertDialog
- 关于AlertDialog的setView与setContentView区别
- zoj3717 Balloon(二分+2SAT)
- Android 判断网络是否可以访问Internet
- 黑马程序员__装饰设计模式
- Redhat Linux安装JDK 1.7
- 130722CF282解题报告
- AlertDialog 与 PopupWindow的 区别
- IIS下PHP的ISAPI和FastCGI比较
- PHP mysql 事务处理实例
- 在线文档查看方案- 易度云查看
- float型与0的比较
- 字符串转换为整数(atoi)
- catwalk carousel
- tty driver(5)
- 网络流dinic算法