android popuwindow点击外部窗口不消失的实例

android popuwindow点击外部窗口不消失的实例,第1张

概述网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false);

网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是: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点击外部窗口不消失的实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存