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

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
主站蜘蛛池模板: 陕西省| 南部县| 肃北| 江油市| 右玉县| 彭泽县| 碌曲县| 固镇县| 宁波市| 来凤县| 彩票| 龙江县| 永新县| 苏尼特左旗| 双桥区| 广安市| 东城区| 谢通门县| 汉阴县| 金平| 弥渡县| 那坡县| 马关县| 漳浦县| 九台市| 城步| 新竹县| 丹棱县| 新昌县| 天水市| 张家界市| 汶上县| 新乐市| 江达县| 乐陵市| 临夏市| 迁西县| 驻马店市| 中江县| 黄陵县| 成武县|