Контекстное меню в Android

394
26 декабря 2016, 23:42

Доброго всем времени суток!

У меня есть ListView, и я хочу к каждому его элементу прикрутить контекстное меню. Часто видел в приложениях, что контекстное меню для элементов листвью вызывается при клике на специальную кнопку с тремя квадратами. Не знаю, как называется эта кнопка, поэтому даже не могу нормально погуглить. Выглядит эта кнопка так:

Скажите, пожалуйста, что это за кнопка и как наилучшим образом приделать контекстное меню к каждому элементу listview? Спасибо!

Answer 1
  1. Кнопка называется "overflow". Скачать её можно в интернете, на habre был когда-то пост со ссылкой на пак с разноцветными иконками.

  2. Меню называется "PopUpMenu". Чтобы его вызвать нужно:

    1) Добавить в лэйаут элемента списка саму иконку, найти её в адаптере и далее:

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {    
        //popUp menu        
        holderMain.settings.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popup = new PopupMenu(context, v);
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.mark_as_read:
                        //действие
                        return true;
                        case R.id.share_link:
                       //действие
                        return true;
                        case R.id.show_comments:
                        //действие
                        return true;
                        default:
                        return false;
                    }
                }
            });
        MenuInflater inflater = popup.getMenuInflater();
        inflater.inflate(R.menu.popup_menu, popup.getMenu());
        popup.show();
        }
    });
    

    2) Ну и ещё нужен popup_menu.xml в папке /res/menu

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/mark_as_read"
        android:orderInCategory="10"
        android:title="@string/mark_as_read"/>
    <item
        android:id="@+id/share_link"
        android:orderInCategory="50"
        android:title="@string/share_link"/>
    <item
        android:id="@+id/show_comments"
        android:orderInCategory="100"
        android:title="@string/show_comments"/>
    </menu>
    
READ ALSO
Разница между java.internal.org.xml&hellip; и org.xml

Разница между java.internal.org.xml… и org.xml

IDEA предлагает импорт javainternal

342
Как сделать в окне такое же меню, как и в `preview` с `l&amp;f` и `pack/exit`? [требует правки]

Как сделать в окне такое же меню, как и в `preview` с `l&f` и `pack/exit`? [требует правки]

Как сделать в окне такое же меню, как и в preview с l&f и pack/exit?

333
Сделать невидимой кнопку через 3 секунды

Сделать невидимой кнопку через 3 секунды

Как сделать кнопку невидимой через 3 секунды?

387
Поменять местами минимум и максимум в массиве

Поменять местами минимум и максимум в массиве

Задача: В массиве все элементы различныПоменяйте местами минимальный и максимальный элемент этого массива

645