2012-11-04 1 views
2

// créer layoutinflator try {fenêtre pop-up à l'extérieur cliquez sur la valeur false [setOutsideTouchable (false)] ne fonctionne pas

 LayoutInflater inflator = LayoutInflater.from(this); 

// Créer une vue

 final View menuview = inflater.inflate(R.layout.menu, 
       (ViewGroup) findViewById(R.layout.dictionarylist)); 

     Button Menu = (Button) findViewById(R.id.Menu); 

     Menu.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 

       final PopupWindow pw = new PopupWindow(menuview);//initialize popupwindow 

       pw.showAtLocation(v, Gravity.CENTER, 0, 0); 
       pw.update(0, 0, 200, 250); 
       pw.setOutsideTouchable(false);//set outside touch to false 

// onclick auditeur pour la bouton à l'intérieur popupwindow

   Button b1 = (Button) menuview.findViewById(R.id.btnClose); 
       b1.setOnClickListener(new OnClickListener() { 

        // @Override 
        public void onClick(View v) { 
         pw.dismiss(); 

        } 

       }); 
       Button b2 = (Button) menuview.findViewById(R.id.btnQuiz); 
       b2.setOnClickListener(new OnClickListener() { 

        // @Override 
        public void onClick(View v) { 

        } 

       }); 
       Button b3 = (Button) menuview.findViewById(R.id.btnTopic); 
       b3.setOnClickListener(new OnClickListener() { 

        // @Override 
        public void onClick(View v) { 

         InitialTask2 Task1 = new InitialTask2(); 
         Task1.execute(); 

        } 

       }); 
       Button b4 = (Button) menuview 
         .findViewById(R.id.btnDictionarylist); 
       b4.setOnClickListener(new OnClickListener() { 

        // @Override 
        public void onClick(View v) { 

         try{ 
         if(getApplication() != null){ 
          pw.dismiss(); 
         } 
         else{ 
         Intent i = new Intent(); 
         i.setClass(getBaseContext(), Dictionarylist.class); 
         startActivity(i); 
         } 
         } 
         catch(Exception x){ 
          x.getMessage(); 
         } 

        } 

       }); 


      } 

     }); 
    } catch (Exception e) { 
     e.getMessage(); 
    } 
    } 

fenêtre contextuelle en dehors du clic ne fonctionne pas pw.setOutsideTouchable(false);. Lorsque vous cliquez en dehors de la fenêtre contextuelle, elle exécute une action placée derrière la fenêtre parent, c'est-à-dire la fenêtre parent. enter image description here

Répondre

8

Essayez ceci:

pw.setTouchable(true);  
pw.setFocusable(false);  
pw.setOutsideTouchable(false); 

Lorsque la fenêtre est touchable true, focalisable est false, setOutsideTouchable() œuvres.

Si le setOutsideTouchable(true), le contact en dehors de popupwindow sera ignoré, sinon l'extérieur de popupwindows peut toujours être touchable sans rejeter.

7

Pour fermer la fenêtre pop-up ajouter juste la ligne de code suivante

popupWindow.setBackgroundDrawable(new ColorDrawable()); 

Il a travaillé pour moi et je suis sûr que ce soit ce que vous voulez.

+2

+1 pour 'ColorDrawable()' car 'BitmapDrawable()' est * déconseillé * –

0

Essayez le code ci-dessous. Cela fonctionne pour moi

popUp.setOutsideTouchable(false); 
popUp.setFocusable(true); 
popUp.showAtLocation(this.layout, Gravity.CENTER, 0, 0); 
Questions connexes