欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中PopupWindow響應(yīng)返回鍵并關(guān)閉的2種方法

 更新時(shí)間:2015年04月24日 10:23:24   投稿:junjie  
這篇文章主要介紹了Android中PopupWindow響應(yīng)返回鍵并關(guān)閉的2種方法,本文講解了最簡(jiǎn)單的方法、最通用的方法,需要的朋友可以參考下

PopupWindow 跟我們的 Activity 不一樣,因?yàn)槲覀冊(cè)跇?gòu)造 PW 的時(shí)候往往不是繼承來(lái)的,而是 new 出來(lái)的。所以不能使用重寫(xiě) PW 的 onKeyDown() 之類(lèi)的方法來(lái)截獲鍵盤(pán)事件。好在 PW 本身的特性讓我們很容易就能做到用返回鍵來(lái)退出,當(dāng)然我們也可以截獲鍵盤(pán)事件,這樣就有兩種方法了。
 
方法一: 最簡(jiǎn)單的方法

在 new 的時(shí)候,使用下面的方法:

復(fù)制代碼 代碼如下:

popupWindow = new PopupWindow(popupWindow_view, 200, 150, true);

關(guān)鍵在于最后一個(gè)參數(shù),SDK 給出的提示是 Focusable,顧名思義就是該 PW 的 Focusable 屬性,讓它能夠接受焦點(diǎn)。
當(dāng)然你可以用另一種構(gòu)造函數(shù),然后再去手動(dòng)設(shè)置focusable屬性:
popupWindow.setFocusable(true); // 一般都需要讓popupWindow里面的組件獲得焦點(diǎn)啊,往往用來(lái)接收用戶(hù)輸入或操作 動(dòng)作

注意: 必須加入下面這行作用未知的語(yǔ)句才能發(fā)揮作用:
popupWindow.setBackgroundDrawable(newBitmapDrawable());// 響應(yīng)返回鍵必須的語(yǔ)句。
請(qǐng)放心,設(shè)置 BackgroundDrawable 并不會(huì)改變你在配置文件中設(shè)置的背景顏色或圖像。

方法二: 最通用的方法


首先在 PW 的布局文件(*.xml)中隨意選取一個(gè)不影響任何操作的 View,推薦使用最外層的 Layout。
然后設(shè)置該 Layout 的 Focusable 和 FocusableInTouchMode 都為 true。
接著回到代碼中,獲取該 View 的實(shí)例,現(xiàn)在你就可以對(duì)該 View 重寫(xiě) OnKeyListener() 事件了。
我們可以手動(dòng)捕獲 KEYCODE_BACK 給對(duì)話(huà)框 dismiss()。給出一段示例:

復(fù)制代碼 代碼如下:

privatePopupWindow pw;
privateView view;
privateLinearLayout layMenu;
 
LayoutInflater inflater = (LayoutInflater) main.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.popup_main_menu,null, false);
layMenu = (LinearLayout) view.findViewById(R.id.layMenu);
pw =new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,true);
 
layMenu.setOnKeyListener(newOnKeyListener()
{
    publicboolean onKey(View v, intkeyCode, KeyEvent event)
    {
        if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK)
            pw.dismiss();
 
        returnfalse;
    }
});

上面兩種方法的代碼可以并存,當(dāng)然如果使用第一種方法的話(huà)就不需要再捕獲返回鍵了,不過(guò)你可以嘗試捕獲其他你需要的按鍵

相關(guān)文章

最新評(píng)論