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 объект к которому хотите привязать свою менюшку и заслать его в параметре конструктора.