android popuwindow點擊外部窗口不消失的實例
網(wǎng)上大多數(shù)都是說如何監(jiān)聽點擊外部消失,但我遇到的問題是點擊外面不讓其消失,如下是我的解決方案,關鍵是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false);
popupMenu = new PopupWindow(view, keylinearlayout.getWidth(), LayoutParams.WRAP_CONTENT); ColorDrawable cd = new ColorDrawable(R.color.white); //popupMenu.setBackgroundDrawable(cd); popupMenu.setBackgroundDrawable(null); popupMenu.setAnimationStyle(R.style.AnimBottom); popupMenu.update(); popupMenu.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); popupMenu.setTouchable(true); // 設置popupwindow可點擊 popupMenu.setOutsideTouchable(false); // 設置popupwindow外部可點擊 popupMenu.setFocusable(false); // 獲取焦點 popupMenu.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 如果點擊了popupwindow的外部,popupwindow也會消失 // 這里如果返回true的話,touch事件將被攔截 // 攔截后 PopupWindow的onTouchEvent不被調(diào)用,這樣點擊外部區(qū)域無法dismiss if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { //popupMenu.dismiss(); StationEventCaptain.getInstance().fireEventDataChange( new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true)); return true; } return false; } }); //初始化鍵盤上的數(shù)字 initALLDig(view); } @Override public PopupWindow createPupupWindow() { return popupMenu; } @Override public void showPopupMenu() { if (popupMenu != null && popupMenu.isShowing()) { popupMenu.dismiss(); StationEventCaptain.getInstance().fireEventDataChange( new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true)); } else { //popupMenu.showAsDropDown(sourceEditView); int pianyi = dpToPx(activity, 8); if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_Left) { popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, pianyi, 0); //設置layout在PopupWindow中顯示的位置 } else if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_RIGHT) { popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.RIGHT, pianyi, 0); //設置layout在PopupWindow中顯示的位置 } else { popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, 0, 0); //設置layout在PopupWindow中顯示的位置 } // popupMenu.showAsDropDown(sourceView, // Math.round(sourceView.getX()), // (int) (sourceView.getY())); } } /** * 將dp轉(zhuǎn)成像素的 * * @param context * @param dp * @return */ static int dpToPx(final Context context, final float dp) { return (int) (dp * context.getResources().getDisplayMetrics().density); } @Override public void destroyPopupMenu() { popupMenu.dismiss(); StationEventCaptain.getInstance() .fireEventDataChange(new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true)); }
成功解決,有問題可以討論。
以上這篇android popuwindow點擊外部窗口不消失的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Android7.0 工具類:DiffUtil詳解
- 適配android7.0獲取文件的Uri的方法
- Android7.0 MessageQueue詳解
- Android圓形頭像拍照后“無法加載此圖片”的問題解決方法(適配Android7.0)
- Android中PopuWindow實現(xiàn)下拉列表實例
- Android adb.exe程序啟動不起來 具體解決方法
- Android Studio的中文亂碼問題解決方法
- Android Activity切換(跳轉(zhuǎn))時出現(xiàn)黑屏的解決方法 分享
- 基于Android中實現(xiàn)定時器的3種解決方法
- Android SDK三種更新失敗及其解決方法
- Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法
相關文章
Android 調(diào)用系統(tǒng)應用的方法總結(jié)
這篇文章主要介紹了Android 調(diào)用系統(tǒng)應用的方法總結(jié)的相關資料,這里提供調(diào)用錄像,錄音,拍照等功能,需要的朋友可以參考下2017-08-08Android黑科技之讀取用戶短信+修改系統(tǒng)短信數(shù)據(jù)庫
這篇文章主要介紹了Android黑科技之讀取用戶短信+修改系統(tǒng)短信數(shù)據(jù)庫 的相關資料,需要的朋友可以參考下2015-12-12android內(nèi)存優(yōu)化之圖片優(yōu)化
對圖片本身進行操作。盡量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource來設置一張大圖,因為這些方法在完成decode后,最終都是通過java層的createBitmap來完成的,需要消耗更多內(nèi)存2012-12-12Android動態(tài)修改ToolBar的Menu菜單示例
本篇文章主要介紹了Android動態(tài)修改ToolBar的Menu菜單示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Android?webView加載數(shù)據(jù)時內(nèi)存溢出問題及解決
這篇文章主要介紹了Android?webView加載數(shù)據(jù)時內(nèi)存溢出問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12android ViewPager實現(xiàn)自動無限輪播和下方向?qū)A點
本篇文章主要介紹了android ViewPager實現(xiàn)自動輪播和下方向?qū)A點,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02Android Studio default not found錯誤解決辦法
這篇文章主要介紹了Android Studio gradle 編譯提示‘default not found’ 解決辦法的相關資料,需要的朋友可以參考下2017-01-01