@ZAndrew

Как установить место появления PopupMenu на экране?

Нужно задать координаты всплывающего меню, т.к. само по себе оно появляется где-то на задворках интерфейса, а именно в верхнем левом углу. На просторах всемирной нашел пример такого решения:
import android.support.v7.widget.ListPopupWindow;
import android.support.v7.widget.ListPopupWindow.ForwardingListener;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.PopupMenu.OnMenuItemClickListener;

........

final Button menuButton = (Button) vView.findViewById(R.id.OptionsButton);
		final PopupMenu popupMenu = new PopupMenu(mainAct, vView, Gravity.CENTER);
		popupMenu.inflate(R.menu.list_manager_context_menu);
		popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener(){
                menuButton.setOnClickListener( new OnClickListener() {
			@Override
			public void onClick(View view) {
          
                 ListPopupWindow.ForwardingListener  listener =(ForwardingListener)               
                 popupMenu.getDragToOpenListener();
    		         listener.getPopup().setVerticalOffset(-menuButton.getHeight());

		         popupMenu.show();
			}
		});
		return vView;
	}

Но у меня listener.getPopup() возвращает null.
  • Вопрос задан
  • 2078 просмотров
Решения вопроса 1
@ZAndrew Автор вопроса
Оказалось, все довольно просто- достаточно передать кнопку к которой я хочу привязать меню в конструктор PopupMenu:
final Button menuButton = (Button) vView.findViewById(R.id.OptionsButton);
final PopupMenu popupMenu = new PopupMenu(mainAct, menuButton , Gravity.CENTER);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
TerraMorf
@TerraMorf
Java Andriod developer
Выравнивание задается в конструкторе PopupMenu. Нужно смотреть разметку, а точнее привязку элементов в XML
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы