Как я могу выделить элемент, который был нажат для создания ContextMenu? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть RecyclerView, в котором можно долго нажимать каждый элемент для отображения контекстного меню. Я хотел бы выделить элемент, который был нажат при длительном нажатии, чтобы пользователь мог увидеть и визуально подтвердить, какой элемент был, прежде чем выбрать что-либо в меню (например, чтобы он не удалил неправильный элемент по ошибке) .

Я могу заставить элемент выделяться нормально, добавляя цвет фона, но не могу отключить его, если пользователь затем закрывает контекстное меню (или если выбранный пункт меню не перевести пользователя на новое действие)

У меня есть следующее для создания меню:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    if (v.getId()==R.id.list_item) {
        // Highlight selected item
     v.setBackgroundColor(getResources().getColor(R.color.browser_actions_bg_grey));
        // Inflate menu
        MenuInflater inflater = this.getMenuInflater();
        inflater.inflate(R.menu.menu_long_press_chart_name, menu);
    }
}

Я предполагаю, что мне нужно что-то сделать в onContextMenuClosed, но я не вижу, что мне нужно сделать:

public void onContextMenuClosed(Menu menu) {
        super.onContextMenuClosed(menu);
}

Я не вижу ничего в переменной menu, которая показывает, какой элемент открыл ее.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Решил это, выполнив следующее в onContextMenuClosed (mRecyclerView - это RecyclerView, который содержит все элементы):

public void onContextMenuClosed(Menu menu) {
    super.onContextMenuClosed(menu);

    View thisItem;

    for(int ii=0; ii< mRecyclerView.count(); ii++) {
       thisItem = mRecyclerView.getChildAt(ii);
       if(thisItem.getId() == R.id.list_item) {
           thisItem.setBackgroundColor(getResources().getColor(R.color.fui_transparent));
       }
    }
}
0 голосов
/ 06 сентября 2018

Отметьте этот ответ , который предлагает способ получать уведомления при закрытии контекстного меню.

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