Изменить гравитацию PopupWindow - PullRequest
4 голосов
/ 29 ноября 2010

У меня есть кнопка, которая должна показывать всплывающее окно. И всплывающее окно должно быть выровнено по правой стороне кнопки. Вот как я это делаю.

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);
        }
    }
} );

Этот код работает нормально, но всплывающее окно выровнено по левой стороне кнопки. Есть ли простой способ изменить гравитацию в PopupWindow?

Ответы [ 2 ]

12 голосов
/ 30 ноября 2010

Самый простой способ, который я нашел, это указать параметр x-offset:

final View view = popup.getContentView();
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
popup.showAsDropDown(button, button.getWidth() - view.getMeasuredWidth(), 0);
0 голосов
/ 29 ноября 2010

Вы можете попробовать изменить его из XML-файла:

android:layout_graviry="left"
...