如何突出显示长时间按下以创建ContextMenu的项目?

时间:2018-09-06 16:56:01

标签: android contextmenu

我有一个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 :(得分:1)

选中this answer,可在上下文菜单关闭时获得通知。

答案 1 :(得分:1)

通过在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));
       }
    }
}