2016-06-22 15 views
0

Ich habe eine Schaltfläche: „btnOpenPopup“ (in einem Scrollview), wenn ich auf die Schaltfläche klicken, wird ein Popup-Fenster erscheinen, ich dieses Popup-Fenster auf dem Bildschirm bewegen kannPopup-Fenster Android

Hier ist mein Code:

final ImageButton btnOpenPopup = (ImageButton) findViewById(R.id.buttonUndoRedo); 
    btnOpenPopup.setOnClickListener(new ImageButton.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      if (popupWindowEnabled == true) { 
       popupWindowEnabled = false; 
       LayoutInflater layoutInflater = 
         (LayoutInflater) getBaseContext() 
           .getSystemService(LAYOUT_INFLATER_SERVICE); 
       final View popupView = layoutInflater.inflate(R.layout.popup_window, null); 
       final PopupWindow popupWindow = new PopupWindow(
         popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

       // Font 
       TextView txt = (TextView) popupView.findViewById(R.id.textViewPopupWindow); 
       Typeface myNewFace = Typeface.createFromAsset(getAssets(), "fonts/futura.ttf"); 
       txt.setTypeface(myNewFace); 

       Button btnDismiss = (Button) popupView.findViewById(R.id.dismiss); 

       btnDismiss.setOnClickListener(new Button.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         popupWindow.dismiss(); 
         popupWindowEnabled = true; 
        } 
       }); 

       popupWindow.showAsDropDown(btnOpenPopup, 50, -30); 

       popupView.setOnTouchListener(new View.OnTouchListener() { 
        int orgX, orgY; 
        int offsetX, offsetY; 

        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         //Toast.makeText(getApplicationContext(), "dEMO", Toast.LENGTH_SHORT).show(); 
         switch (event.getAction()) { 
          case MotionEvent.ACTION_DOWN: 
           orgX = (int) event.getX(); 
           orgY = (int) event.getY(); 
           break; 
          case MotionEvent.ACTION_MOVE: 
           offsetX = (int) event.getRawX() - orgX; 
           offsetY = (int) event.getRawY() - orgY; 
           popupWindow.update(offsetX, offsetY, -1, -1, true); 
           break; 
         } 
         return true; 
        } 
       }); 
      } 

     } 

    }); 

das Problem ist, wenn ich btnOpenPopup in Scrollview bewegen, wird die popupwindow seine Position zu verlassen und folgen Sie den btnOpenPopup

Wie Popup-Fenster, um zu verhindern bewegen, wenn wir btnOpenPopup bewegen? Vielen Dank im Voraus!

+0

Verfolgen Sie [diese] (http://android-er.blogspot.in/2012/03/example-of-using-popupwindow.html)? – pRaNaY

Antwort

0

Ich denke, Sie müssen .showAtLocation(..) Parameter ändern.

ändern

popupWindow.showAsDropDown(btnOpenPopup, 50, -30); 

zu

popupWindow.showAsDropDown(rootViewId, 50, -30);// RootView id is your main layout id. 

Ich glaube, Sie ScrollViewId hinzufügen müssen.

Ich hoffe, es hilft Ihnen.

+0

es funktioniert nicht bro – Liar

Verwandte Themen