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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With