Привязка PopupMenu к ImageView

У меня есть ImageView, который открывает PopupMenu при нажатии. Как настроить отображение PopupMenu в определенном месте? PopupMenu будет служить выпадающим меню, и я бы хотел, чтобы верхний правый угол PopupMenu находился там, где щелкнул пользователь. См. Изображения ниже для иллюстрации:

Что у меня есть сейчас:

Привязка PopupMenu к ImageView

Что я хочу:

Привязка PopupMenu к ImageView

Соответствующий код:

mNavViewDropDown= navViewHeader.findViewById(R.id.navview_header_expand);
mNavViewDropDown.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        PopupMenu popup = new PopupMenu(getContext(), mNavViewDropDown);
        //Inflating the Popup using xml file
        popup.getMenuInflater()
                .inflate(R.menu.menu_navview_header_, popup.getMenu());
        //registering popup with OnMenuItemClickListener
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(
                        getContext(),
                        "You Clicked : " + item.getTitle(),
                        Toast.LENGTH_SHORT
                ).show();
                return true;
            }
        });
        popup.show(); //showing popup menu
    }
});

используйте раскрывающийся список вместо всплывающего меню

Faiz Mir 19.09.2018 19:10
1
1
519
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете установить плотность всплывающего меню.

popup.setGravity(Gravity.LEFT);

При этом то, что вы делаете, больше похоже на взлом. Нет никакой гарантии, что он появится слева. Вы должны либо использовать expandableListView, либо создать собственное расширяемое представление. Попробуйте эту библиотеку: https://github.com/AAkira/ExpandableLayout. Это простой способ показать расширяемое представление.

Ответ принят как подходящий

Поэтому вместо того, чтобы использовать это хакерское выпадающее всплывающее меню, я понял, что есть гораздо лучший инструмент, уже созданный именно для этого:

https://developer.android.com/guide/topics/ui/controls/spinner#java

Другие вопросы по теме