安卓PopupWindow的基本使用及填坑
PopupWindow用来实现一个弹出框,
可以使用任意布局的View作为其内容
,这个弹出框是悬浮在当前activity之上的。很早之前就使用过,不过并没有做记录,如今再次使用依然是各种百度,好记性不如烂笔头。
基本使用:
View popView = getLayoutInflater().inflate(R.layout.menu_search, null);
popupBrower = new PopupWindow(popView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, false);
popupBrower.setOutsideTouchable(true); // 点击外部关闭
popupBrower.setAnimationStyle(android.R.style.Animation_Dialog);
popupBrower.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupBrower.showAsDropDown(ivRight, 0, 0);
R.layout.menu_search:是popupwindow显示的布局
ivRight:设置popupwindow显示在哪个控件之下
填坑:
(1)PopupWindow无法消失
- 设置setOutsideTouchable(true),点击外部关闭
- 设置popupwindow的背景,否则无法关闭,setBackgroundDrawable
(2)判断PopupWindow当前是否显示
if (popupBrower != null){
popupBrower.setFocusable(true);
}
if (!popupBrower.isShowing()){
popupBrower.showAsDropDown(ivRight, 0, 0);
}
单纯的isShowing并没有效果,需要popupwindow先获取焦点,再做判断
(3)popupwindow显示的位置(还在学习)
Popupwindow有两个方法设置显示
- showAtLocation(View parent,int gravity,int x,int y):相对于父控件的位置
- showAsDropDown(View anchor,int xoff,int yoff):相对某个控件的位置,有偏移,如果x和y都为0,则在该控件的左下方