Как сделать любую кнопку изображения кнопкой меню - PullRequest
0 голосов
/ 01 июля 2018

У меня есть imageButton в XML-файле. Теперь нужно сделать из него кнопку меню, чтобы при нажатии на кнопку пользователь отображал раскрывающиеся меню. Но я не могу понять, каковы возможные решения. Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018
    final ImageButton imageButton ;

    final PopupMenu dropDownMenu = new PopupMenu(getContext(), imageButton);

    final Menu menu = dropDownMenu.getMenu();
    menu.add(0, 0, 0, "Item 1");
    menu.add(0, 1, 0, "Item 2");

    dropDownMenu.getMenuInflater().inflate(R.menu.some_menu, menu);

    dropDownMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case 0:

                    return true;
                case 1:

                    return true;
            }
            return false;
        }
    });

    imageButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dropDownMenu.show();
        }
    });


    imageButton.setOnTouchListener(dropDownMenu.getDragToOpenListener());
0 голосов
/ 01 июля 2018

Если вы пытаетесь отобразить раскрывающееся меню при нажатии ImageButton (или любого другого Вид ), попробуйте следующее:

final ImageButton imageButton = // get your ImageButton from the XML here

final PopupMenu dropDownMenu = new PopupMenu(getContext(), imageButton);

final Menu menu = dropDownMenu.getMenu();
// add your items:
menu.add(0, 0, 0, "An item");
menu.add(0, 1, 0, "Another item");
// OR inflate your menu from an XML:
dropDownMenu.getMenuInflater().inflate(R.menu.some_menu, menu);

dropDownMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case 0:
                // item ID 0 was clicked
                return true;
            case 1:
                // item ID 1 was clicked
                return true;
        }
        return false;
    }
});

imageButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        dropDownMenu.show();
    }
});

// if you want to be able to open the menu by dragging on the button:
imageButton.setOnTouchListener(dropDownMenu.getDragToOpenListener());

Когда Android Studio просит импортировать PopupMenu, вы можете увидеть два варианта:

  1. android.support.v7.widget.PopupMenu это лучший вариант, он гарантирует, что ваше меню будет работать в любой версии Android
  2. android.widget.PopupMenu этот работает только на Android 2.1 и выше, что, вероятно, хорошо. Однако, если новые версии Android поставляются с новыми функциями в PopupMenu , первый вариант также может позволить вам использовать эти новые функции в более старых версиях Android.
...