官术网_书友最值得收藏!

Creating contextual action mode menu

Some controls or regions in the user interface allow for additional actions to be performed. However, due to limited screen space, these actions need to be hidden until the user requests them.

How to do it...

  1. The first thing that needs to be done is to let the activity or fragment know that we want to display a popup menu when the user long-taps on a view:
    this.RegisterForContextMenu(someView);
  2. Then, following the pattern of the options menu, we create or inflate the menu items in the OnCreateContextMenu() method:
    public override void OnCreateContextMenu(
      IContextMenu menu,
      View view, 
      IContextMenuContextMenuInfo menuInfo) {
      base.OnCreateContextMenu(menu, view, menuInfo);
     MenuInflater.Inflate(Resource.Menu.Main_Options, menu);
    }
  3. Lastly, we can respond to item selections, as we did with the options menu, in the OnContextItemSelected() method:
    public override bool OnContextItemSelected(IMenuItem item) {
      if (item.ItemId == Resource.Id.action_refresh) {
        // do something here...
        return true;
      }
      return base.OnContextItemSelected(item);
    }

How it works...

We can provide a context menu for any view, but they are most often used for items in a list, grid, or other view collection. One way to show a contextual menu is to use a floating or pop-up menu, and it is the recommended way for apps supporting versions of Android below version 3.0.

Tip

If the views or list view is not registered with its activity or fragment, the context menu will not be displayed, even if the methods are implemented.

When the user long-taps on a view that has been registered for a context menu, the activity or fragment attempts to display a menu that is created or inflated in the OnCreateContextMenu() method.

After the user selects an item from the contextual menu, the OnContextItemSelected() method on the activity or fragment is invoked. In this method, we initiate the desired operation that was selected. We can identify the selected item using the ItemId property.

There's more...

Using the IContextMenu instance that is passed into the OnCreateContextMenu() method, we can change or remove the header of the popup menu. The header could be a combination of an icon and/or text or a separate custom view:

menu.SetHeaderTitle("My Context Menu Heading");

See also

  • The Creating an options menu recipe
  • The Creating contextual action mode menu recipe
主站蜘蛛池模板: 郁南县| 武义县| 和平县| 洪泽县| 嘉善县| 卢氏县| 永城市| 玉山县| 枝江市| 宣恩县| 潢川县| 台安县| 乌审旗| 迭部县| 清新县| 永新县| 麦盖提县| 德保县| 綦江县| 喀喇沁旗| 江川县| 灵璧县| 青海省| 扬州市| 普格县| 尼玛县| 合水县| 喀什市| 徐州市| 饶平县| 瓮安县| 镶黄旗| 马鞍山市| 安龙县| 贵德县| 皮山县| 泾阳县| 大兴区| 庆安县| 朝阳市| 平顶山市|