Android PopuWindow的简单使用(点击外部消失)

初始化popuWindow

PopupWindow popupWindow = new PopupWindow(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
        View inflate = View.inflate(context, R.layout.popu_add_friend, null);
        popupWindow.setFocusable(true);
        popupWindow.setOutsideTouchable(true);
        //必须添加一个背景,任意颜色的背景都可以
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        popupWindow.setContentView(inflate);

单独说一下这三个属性

popupWindow.setFocusable(true);

这个属性表示popuWindow弹出以后,是否获取焦点,如果设置为true,那么当popuWindow弹出的时候,Activity中的其他控件就无法获取焦点,例如Activity中的按钮不能点击,列表无法滑动...,只有popuWindow可与用户交互

  popupWindow.setOutsideTouchable(true);

这个属性表示设置popuwindow外部的区域是否可触摸。
如果设置为true,那么当点击popuWindow外面区域时,popuWindow会自动消失。设置为false,那么点击那么当点击popuWindow外面区域时,popuWindow不会消失。
该属性默认为false
注意
该属性要想生效(即点击popuWindow外部,让popuWindow消失),必须给popuWindow添加一个背景,任意颜色的背景都可以,代码如下

popupWindow.setBackgroundDrawable(new BitmapDrawable());

另外,这个属性强调的是点击popuWindow的外部,如果你的popuWindow很大,例如不小心把popuWindow的宽高指定为了MATCH_PARENT,那么你的触摸区域就会始终在popuWindow的内部,此时无论你怎么点击屏幕,popuWindow都无法自动消失。

显示popuWindow

在某个View下面显示popuWindow
popupWindow.showAsDropDown(view);
这个方法有重载,读者自行测试即可。

让popuWindow消失
popupWindow.dismiss()

判断popuWindow是否是显示状态
popupWindow.isShowing()

给popuWindow设置消失的监听

 popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                
            }
  });

完!

你可能感兴趣的:(Android PopuWindow的简单使用(点击外部消失))