2010-11-29 7 views
4

Ich habe eine Schaltfläche, die ein Popup-Fenster anzeigen muss. Und das Popup-Fenster muss mit der rechten Seite der Schaltfläche ausgerichtet sein. So mach ich es.Ändern der Schwerkraft von PopupWindow

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(final View view) { 
     if(popup == null) { 
      final View view = getLayoutInflater().inflate(R.layout.popup, null); 
      popup = new PopupWindow(view); 
     } 

     if(popup.isShowing()) { 
      popup.dismiss(); 
     } else { 
      popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 
      popup.setFocusable(true); 
      popup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
      popup.showAsDropDown(button, 0, 0); 
     } 
    } 
}); 

Dieser Code funktioniert gut, aber die Popup-Fenster mit der linken Seite der Taste ausgerichtet ist. Gibt es eine einfache Möglichkeit, die Schwerkraft von PopupWindow zu ändern?

Antwort

11

Der einfachste Weg, die ich gefunden habe ist die x-Offset-Parameter angeben:

final View view = popup.getContentView(); 
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
popup.showAsDropDown(button, button.getWidth() - view.getMeasuredWidth(), 0); 
+0

Ich hätte Probleme mit dem Verwenden von ListPopupWindow. – user1841702

-3

Sie können versuchen, es aus der XML-Datei zu ändern:

android:layout_graviry="left" 
+0

PopupWindow als andere geschaffen Fenster, keine Ansicht, so dass diese Methode nicht funktioniert. – Michael

Verwandte Themen