PopupMenu съезжает в низ

Почему-то при вызове PopupMenu надпись находиться не под иконкой а на порядок ниже. Из-за чего это происходит? И как сделать чтобы надпись появлялась сразу под иконкой трёх точеквведите сюда описание изображения

Java

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @SuppressLint("RestrictedApi")
    private void showMenu(View v) {
        androidx.appcompat.widget.PopupMenu popup = new PopupMenu(Objects.requireNonNull(getContext()), v);
        popup.getMenuInflater().inflate(R.menu.quick_menu, popup.getMenu());
        if (popup.getMenu() instanceof MenuBuilder) {
            MenuBuilder menuBuilder = (MenuBuilder) popup.getMenu();
            menuBuilder.setOptionalIconsVisible(true);
        }
        popup.setOnMenuItemClickListener(
                menuItem -> {
                    Snackbar.make(
                            Objects.requireNonNull(Fragment_Menu_list_Tasks_Prapor_1.this.getActivity()).findViewById(android.R.id.content),
                            menuItem.getTitle(),
                            Snackbar.LENGTH_LONG)
                            .show();
                    return true;
                });
        popup.show();
    }

R.menu

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/one"
        android:icon="@drawable/ic_anim_handbook_4"
        android:title="@string/added_to_favorites" />
</menu>

Так нужно?

  @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @SuppressLint("RestrictedApi")
    private void showMenu(View v) {
        androidx.appcompat.widget.PopupMenu popup = new PopupMenu(Objects.requireNonNull(getContext()), v);
        popup.getMenuInflater().inflate(R.menu.quick_menu, popup.getMenu());
        if (popup.getMenu() instanceof MenuBuilder) {
            MenuBuilder menuBuilder = (MenuBuilder) popup.getMenu();
            menuBuilder.setOptionalIconsVisible(true);
            showMenu(view33);
        }
        popup.setOnMenuItemClickListener(
                menuItem -> {
                    Snackbar.make(
                            Objects.requireNonNull(Fragment_Menu_list_Tasks_Prapor_1.this.getActivity()).findViewById(android.R.id.content),
                            menuItem.getTitle(),
                            Snackbar.LENGTH_LONG)
                            .show();
                    return true;
                });
        popup.show();
    }

Ответы (1 шт):

Автор решения: Barmaley

Место показа PopupMenu привязано к anchor (якорю). Якорный View задается в конструкторе PopupMenu, у вас он привязан к View, который передается параметром к showMenu()

Вам надо получить ссылку на View объект к которому хотите привязать свою менюшку и заслать его в параметре конструктора.

→ Ссылка