4 Stimmen

Schwerkraft von PopupWindow ändern

Ich habe eine Schaltfläche, die ein Popup-Fenster anzeigen soll. Und das Popup-Fenster muss an der rechten Seite der Schaltfläche ausgerichtet sein. So mache ich es.

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 das Popup-Fenster ist an der linken Seite der Schaltfläche ausgerichtet. Gibt es eine einfache Möglichkeit, die Schwerkraft von PopupWindow zu ändern?

13voto

Michael Punkte 52549

Der einfachste Weg, den ich gefunden habe, ist, den Parameter x-offset anzugeben:

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

-5voto

menu_on_top Punkte 2583

Sie können versuchen, sie in der xml-Datei zu ändern:

android:layout_graviry="left"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X