2013-08-06 4 views
1

Я надеялся получить ответ для этого, я очень старался отклонить всплывающее окно, когда я нажимаю на него, но он не уходит, кто-нибудь знает почему? Также он не возвращается, когда я нажимаю кнопку «Назад».Увольнение всплывающего окна

public void onButtonPopup (View target) { 
     // Make a View from our XML file 
     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = size.x; 
     int height = size.y; 

     LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.samplescreens, (ViewGroup) findViewById(R.id.closeLayout)); 


     pwindo = new PopupWindow(layout, width-40, height-(height/4), true); 
     pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0); 

     pwindo.update(); 
     pwindo.setOutsideTouchable(true); 
    } 
public void onButtonInPopup (View target) { 
     //back_dim_layout.setVisibility(View.GONE); 
     pwindo.dismiss(); 
    } 
+0

возможно дубликат [Android увольнение всплывающего окна] (http://stackoverflow.com/questions/3121232/android-popup-window-dismissal) – Qberticus

+0

и что «очень много»? – maysi

+0

Также см. Сообщение: http://stackoverflow.com/questions/12554855/click-outside-of-popup-to-dismiss-it – MiStr

ответ

0

Наконец-то решил! Изменен порядок:

pwindo = new PopupWindow(layout, width-40, height-(height/4), true); 

     pwindo.setOutsideTouchable(true); 
     pwindo.setTouchable(true); 
     pwindo.setBackgroundDrawable(new BitmapDrawable()); 
     pwindo.setTouchInterceptor(customPopUpTouchListenr); 

    pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0); 

он работает сейчас

1

Одна из проблем вашего кода вы написали pwindo = new PopupWindow(layout, width-40, height-(height/4), true);, в котором далее параметр true т.е. держать всплывающее окно Focusable. Это ошибка, как если бы вы сказали pwindo.setOutsideTouchable(true);, что вы уже определили, что всплывающее окно должно быть настраиваемым. Сделайте этот параметр до false. Тем не менее, если вы не можете его уволить, перед тем, как отклонить всплывающее окно, как pwindo.dismiss(), напишите эту строку, pwindo.setBackgroundDrawable(new BitmapDrawable(getResources()));.

Надеюсь, это поможет вам.

+0

Нет, он еще не работает, я редактировал свой код, показывая метод увольнения. @ Giga_abhi – stallianz

+0

, и мне нужно поставить focusable в true, потому что у меня есть кнопки и редактировать текст во всплывающем окне. – stallianz

+0

Попробуйте положить 'pwindo. setBackgroundDrawable (новый BitmapDrawable (getResources())); 'перед тем, как отклонить его! Это сработало для меня. – thegiga

Смежные вопросы