需求:
点击一个按钮显示和隐藏popupwindow
点击外部可隐藏popupwindow
// floorDialog集成popupwindow
if (floorDialog == null) {
//弹出pop
floorDialog = new selectElevatorDialog(getActivity());
floorDialog.popView(llViewFloor, 300, 50);
} else {
if (floorDialog.isShowing()) {
floorDialog.dismiss();
floorDialog = null;
} else {
floorDialog = null;
//弹出pop
floorDialog = new selectElevatorDialog(getActivity());
floorDialog.popView(llViewFloor, 300, 50);
}
}
可能出现的问题:
Android问题——PopupWindow的isShowing()一直都是返回false
https://blog.csdn.net/a10615/article/details/51460942
摘录:
问题:查看是否这样的设计思路:用一个按钮,通过isShowing()来判断状态,然后展示和隐藏popup。且使能了外部触摸
setBackgroundDrawable(new BitmapDrawable());
setOutsideTouchable(true)
然后在按钮中获取isShowing()的状态,结果一直返回的都是false。
原因分析:你触摸按钮的时候,它属于外部区域,触摸它肯定会把popup隐藏,所以,在按钮事件中判断一直都是false
解决办法:让popup把焦点从外部抢夺过来,setFocusable(true)即可,至于setTouchable(true),不用也行。这个时候也不用判断状态了,按钮中只处理显示代码就行了
网友评论