首页 > 移动开发 > Android–ContextMenu上下文菜单

Android–ContextMenu上下文菜单

在本程序中,通过 ListView(列表视图)显示所有数据,然后使用 registerForContextMenu(listView) 对上下文菜单进行了注册。

所以当用户长按任何一个列表项时,都会直接将上下文菜单显示出来。

 

菜单项的代码编写很简单,直接 覆写 Activity中的相关方法即可:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)

public boolean onContextItemSelected(MenuItem item)

public void onContextMenuClosed(Menu menu)

 

 

File:ContextMenuDeomActivity.java

 

[java][/java] view plaincopy

  1. package com.jjiangge.contextmenudeom;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.ContextMenu;
  5. import android.view.ContextMenu.ContextMenuInfo;
  6. import android.view.Menu;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.widget.ArrayAdapter;
  10. import android.widget.ListView;
  11. import android.widget.Toast;
  12. public class ContextMenuDeomActivity extends Activity {
  13.     private String data[] = {"北京市", "邯郸市", "秦皇岛", "石家庄", "河北省", "海淀区"};
  14.     private ListView listView;
  15.     @Override
  16.     protected void onCreate(Bundle savedInstanceState) {
  17.         super.onCreate(savedInstanceState);
  18.         listView = new ListView(this);
  19.         listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, data));//将数据进行包装,每行显示一条数据
  20.         setContentView(listView);
  21.         registerForContextMenu(listView);//注册上下文菜单
  22.     }
  23.     @Override
  24.     public void onCreateContextMenu(ContextMenu menu, View v,
  25.             ContextMenuInfo menuInfo) {
  26.         super.onCreateContextMenu(menu, v, menuInfo);
  27.         menu.setHeaderTitle("信息操作");
  28.         menu.add(Menu.NONE, Menu.FIRST+1, 1, "添加联系人");
  29.         menu.add(Menu.NONE, Menu.FIRST+2, 2, "查看详情");
  30.         menu.add(Menu.NONE, Menu.FIRST+3, 3, "删除信息");
  31.         menu.add(Menu.NONE, Menu.FIRST+4, 4, "另存为");
  32.         menu.add(Menu.NONE, Menu.FIRST+5, 5, "编辑");
  33.     }
  34.     @Override
  35.     public boolean onContextItemSelected(MenuItem item) {
  36.         switch (item.getItemId()) {
  37.         case Menu.FIRST+1:
  38.             Toast.makeText(this, "您选择的是‘添加联系人’", Toast.LENGTH_LONG).show();
  39.             break;
  40.         case Menu.FIRST+2:
  41.             Toast.makeText(this, "您选择的是‘查看详情’", Toast.LENGTH_LONG).show();
  42.             break;
  43.         case Menu.FIRST+3:
  44.             Toast.makeText(this, "您选择的是‘删除信息’", Toast.LENGTH_LONG).show();
  45.             break;
  46.         case Menu.FIRST+4:
  47.             Toast.makeText(this, "您选择的是‘另存为’", Toast.LENGTH_LONG).show();
  48.             break;
  49.         case Menu.FIRST+5:
  50.             Toast.makeText(this, "您选择的是‘编辑’", Toast.LENGTH_LONG).show();
  51.             break;
  52.         }
  53.         return false;
  54.     }
  55.     @Override
  56.     public void onContextMenuClosed(Menu menu) {
  57.         Toast.makeText(this, "菜单退出时调用。上下文菜单关闭了", Toast.LENGTH_LONG).show();
  58.     }
  59. }

在本程序中,通过 ListView(列表视图)显示所有数据,然后使用 registerForContextMenu(listView) 对上下文菜单进行了注册。

 

所以当用户长按任何一个列表项时,都会直接将上下文菜单显示出来。

 

 

运行结果:

长按“邯郸”一项

 

会显示:


本文固定链接: http://www.devba.com/index.php/archives/2601.html | 开发吧

报歉!评论已关闭.