I have a button that must show a popup window. And the popup window must be aligned with the right side of the button. That's how I do it.
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);
}
}
} );
This code works fine but the popup window is aligned with the left side of the button. Is there an easy way to change gravity of PopupWindow?
The easiest way I've found is to specify the x-offset parameter:
final View view = popup.getContentView();
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
popup.showAsDropDown(button, button.getWidth() - view.getMeasuredWidth(), 0);