Всплывающее меню выходит в левом нижнем углу - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь реализовать всплывающее меню в моем фрагменте, но результат намного превосходит мои желания. У меня есть кнопка на панели действий, и одна из этих кнопок вызывает всплывающее меню, и никаких проблем пока нет. Он успешно звонит, и я вижу всплывающее меню. Вот как я это делаю.

во фрагменте класса

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.x) {           
    } else showPopup(view /* or getView() */);

    return super.onOptionsItemSelected(item);
}

public void showPopup(View v) {
    PopupMenu popupMenu = new PopupMenu(getContext(), v);
    MenuInflater menuInflater = popupMenu.getMenuInflater();
    menuInflater.inflate(R.menu.event_popup, popupMenu.getMenu());
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            return false;
        }
    });
    popupMenu.show();
}

popup_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/a"
    android:icon="@drawable/ic_action_back"
    android:title="a" />

<item android:id="@+id/b"
    android:icon="@drawable/ic_action_back"
    android:title="b" />

Меню действий фрагмента (включает кнопку, которая открывает всплывающее меню)

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/x"
    android:icon="@drawable/ic_action_back"
    yourapp:showAsAction="ifRoom"
    android:title="" />

<item android:id="@+id/y"
    android:icon="@drawable/ic_action_menu_dot"
    yourapp:showAsAction="ifRoom"
    android:title="" />

</menu>

И в результате вот как это выглядит. Я хочу, чтобы это было сверху справа. Как я могу справиться с этим. Насколько я знаю, его размещение по умолчанию уже в правом верхнем углу.

enter image description here

1 Ответ

0 голосов
/ 16 ноября 2018

Вы должны обеспечить правильное представление привязки (в данном случае переполнение меню) для всплывающего меню.

Попробуйте изменить

showPopup(view);

до

View menuItemView = MyActivity.this.findViewById(R.id.overflow_menu); // replace with your id
showPopup(menuItemView);

Это должно привести всплывающее меню наверх. Если он все еще на левой стороне, используйте

popupMenu.setGravity(Gravity.END);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...