Android的對(duì)話框有兩種:PopupWindow和AlertDialog。它們的不同點(diǎn)在于:
成都創(chuàng)新互聯(lián)公司成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:13518219792AlertDialog的位置固定,而PopupWindow的位置可以隨意
AlertDialog是非阻塞線程的,而PopupWindow是阻塞線程的
下面介紹PopupWindow的用法:
PopupWindow的位置按照有無偏移分,可以分為偏移和無偏移兩種;按照參照物的不同,可以分為相對(duì)于某個(gè)控件和相對(duì)于父控件
showAsDropDown(View anchor):相對(duì)某個(gè)控件的位置(正左下方),無偏移
showAsDropDown(View anchor, int xoff, int yoff):相對(duì)某個(gè)控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相對(duì)于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以設(shè)置偏移或無偏移
具體代碼:
private void showPopupWindow(View v) { //v為父控件 View inflate = LayoutInflater.from(getActivity()).inflate( R.layout.pop_del, null); //定義一個(gè)布局 mPopupWindow = new PopupWindow(inflate, 140, 40); //傳入布局,及Popupwindow的寬高 //如果要實(shí)現(xiàn)點(diǎn)擊PopupWindow之外的區(qū)域,關(guān)閉PopupWindow,要增加下面這3個(gè)屬性 mPopupWindow.setFocusable(true); mPopupWindow.setOutsideTouchable(true); mPopupWindow.setBackgroundDrawable(new BitmapDrawable()); //PopupWindow彈出及關(guān)閉動(dòng)畫 mPopupWindow.setAnimationStyle(R.style.PopAnim); int[] location = new int[2]; v.getLocationOnScreen(location); //獲取父控件在屏幕上的位置坐標(biāo) //將Popupwindow顯示在父控件的左邊,location[0]為父控件的橫坐標(biāo),location[1]為父控件的縱坐標(biāo) mPopupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0] - mPopupWindow.getWidth(), location[1]); //設(shè)置布局的點(diǎn)擊監(jiān)聽,點(diǎn)擊PopupWindow之外的區(qū)域,關(guān)閉PopupWindow inflate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(mPopupWindow != null){ mPopupWindow.dismiss(); mPopupWindow = null; } } });
}
mPopupWindow.setFocusable(false):說明PopuWindow不能獲得焦點(diǎn),即使設(shè)置設(shè)置了背景不為空也不能點(diǎn)擊外面消失,只能由dismiss()消失,但是外面的View的事件還是可以觸發(fā),back鍵也可以順利dismiss掉。
當(dāng)設(shè)置為popuWindow.setFocusable(true);的時(shí)候,加上下面兩行設(shè)置背景代碼,點(diǎn)擊外面和Back鍵才會(huì)消失
mPopupWindow.setOutsideTouchable(true):設(shè)置顯示PopuWindow之后在外面點(diǎn)擊是否有效。如果為false的話,那么點(diǎn)擊PopuWindow外面并不會(huì)關(guān)閉PopuWindow。當(dāng)然這里很明顯只能在Touchable下才能使用。
要讓PopUpWindow dimiss(即點(diǎn)擊PopuWindow之外的地方此或者back鍵PopuWindow會(huì)消失),PopUpWindow的背景不能為空。必須在popuWindow.showAsDropDown(v);或者其它的顯示PopuWindow方法之前設(shè)置它的背景不為空:mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱:PopupWindow詳解-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://m.rwnh.cn/article36/djoosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、做網(wǎng)站、建站公司、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容