android popuwindow点击外部窗口不消失的实例
网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false);
popupMenu=newPopupWindow(view,keylinearlayout.getWidth(),LayoutParams.WRAP_CONTENT); ColorDrawablecd=newColorDrawable(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(newView.OnTouchListener(){ @Override publicbooleanonTouch(Viewv,MotionEventevent){ //如果点击了popupwindow的外部,popupwindow也会消失 //这里如果返回true的话,touch事件将被拦截 //拦截后PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss if(event.getAction()==MotionEvent.ACTION_OUTSIDE){ //popupMenu.dismiss(); StationEventCaptain.getInstance().fireEventDataChange( newStationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS,true)); returntrue; } returnfalse; } }); //初始化键盘上的数字 initALLDig(view); } @Override publicPopupWindowcreatePupupWindow(){ returnpopupMenu; } @Override publicvoidshowPopupMenu(){ if(popupMenu!=null&&popupMenu.isShowing()){ popupMenu.dismiss(); StationEventCaptain.getInstance().fireEventDataChange( newStationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS,true)); }else{ //popupMenu.showAsDropDown(sourceEditView); intpianyi=dpToPx(activity,8); if(keyboardType==IPopupMenu.MENU_TYPE_HEDGE_Left){ popupMenu.showAtLocation(keylinearlayout,Gravity.BOTTOM|Gravity.LEFT,pianyi,0);//设置layout在PopupWindow中显示的位置 }elseif(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转成像素的 * *@paramcontext *@paramdp *@return */ staticintdpToPx(finalContextcontext,finalfloatdp){ return(int)(dp*context.getResources().getDisplayMetrics().density); } @Override publicvoiddestroyPopupMenu(){ popupMenu.dismiss(); StationEventCaptain.getInstance() .fireEventDataChange(newStationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS,true)); }
成功解决,有问题可以讨论。
以上这篇androidpopuwindow点击外部窗口不消失的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。