android popuwindow 외부 창 을 누 르 면 사라 지지 않 는 인 스 턴 스

인터넷 에서 대부분 은 외부 클릭 이 사라 지 는 것 을 감청 하 는 방법 을 말 하지만 제 가 직면 한 문 제 는 밖 을 클릭 하여 사라 지지 않도록 하 는 것 입 니 다.다음 과 같은 제 해결 방안 입 니 다.관건 은 popupmenu.setBackground Drawable(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, 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     
 * 
 * @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));

 }

성공 적 으로 해결 하여 문제 가 있 으 면 토론 할 수 있다.
이 안 드 로 이 드 popuwindow 에서 외부 창 을 누 르 면 사라 지지 않 는 인 스 턴 스 는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기