初始化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);
單獨(dú)說一下這三個屬性
popupWindow.setFocusable(true);
??這個屬性表示popuWindow彈出以后,是否獲取焦點(diǎn),如果設(shè)置為true,那么當(dāng)popuWindow彈出的時候,Activity中的其他控件就無法獲取焦點(diǎn),例如Activity中的按鈕不能點(diǎn)擊,列表無法滑動...,只有popuWindow可與用戶交互
popupWindow.setOutsideTouchable(true);
??這個屬性表示設(shè)置popuwindow外部的區(qū)域是否可觸摸。
如果設(shè)置為true,那么當(dāng)點(diǎn)擊popuWindow外面區(qū)域時,popuWindow會自動消失。設(shè)置為false,那么點(diǎn)擊那么當(dāng)點(diǎn)擊popuWindow外面區(qū)域時,popuWindow不會消失。
該屬性默認(rèn)為false
注意??
該屬性要想生效(即點(diǎn)擊popuWindow外部,讓popuWindow消失),必須給popuWindow添加一個背景,任意顏色的背景都可以,代碼如下??
popupWindow.setBackgroundDrawable(new BitmapDrawable());
另外,這個屬性強(qiáng)調(diào)的是點(diǎn)擊popuWindow的外部,如果你的popuWindow很大,例如不小心把popuWindow的寬高指定為了MATCH_PARENT,那么你的觸摸區(qū)域就會始終在popuWindow的內(nèi)部,此時無論你怎么點(diǎn)擊屏幕,popuWindow都無法自動消失。
顯示popuWindow
在某個View下面顯示popuWindow??
popupWindow.showAsDropDown(view);
這個方法有重載,讀者自行測試即可。
讓popuWindow消失??
popupWindow.dismiss()
判斷popuWindow是否是顯示狀態(tài)??
popupWindow.isShowing()
給popuWindow設(shè)置消失的監(jiān)聽
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
}
});
完!