网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是: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不被调用,这样点击外部区域无法dismiss if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { //popupMenu.dismiss(); StationEventCaptain.getInstance().fireEventDataChange( new StationEventData(IStationEventname.HEDGE_KEYBORAD_DIMISS,true)); return true; } return false; } }); //初始化键盘上的数字 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,0); //设置layout在PopupWindow中显示的位置 } else { popupMenu.showAtLocation(keylinearlayout,0); //设置layout在PopupWindow中显示的位置 } // popupMenu.showAsDropDown(sourceVIEw,// Math.round(sourceVIEw.getX()),// (int) (sourceVIEw.getY())); } } /** * 将dp转成像素的 * * @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点击外部窗口不消失的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android popuwindow点击外部窗口不消失的实例全部内容,希望文章能够帮你解决android popuwindow点击外部窗口不消失的实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)