Android PopuWindow的簡單使用(點(diǎn)擊外部消失)

初始化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() {
                
            }
  });

完!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容