标签:android contextmenu menu 菜单
一、 菜单资源通常放在res/menu目录下,菜单资源是的根元素通常是<menu></menu>标记,在该标记下可以包含以下两个元素。
1.<item></item>标记:用于定义菜单项。
2.<group></group>标记:用于将多个<item></item>标记定义的菜单包装成一个菜单组。
在menu_main.xml的具体代码如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/item1" android:title="更换背景" android:alphabeticShortcut="g"></item> <item android:id="@+id/item2" android:title="编辑组件" android:alphabeticShortcut="e"></item> <item android:id="@+id/item3" android:title="恢复默认" android:alphabeticShortcut="r"></item> <group android:id="@+id/setting"> <item android:id="@+id/sound" android:title="使用背景"></item> <item android:id="@+id/video" android:title="背景音乐"></item> </group> </menu>
1.选项菜单(Option Menu)
当用户单击菜单按钮时,弹出的菜单就是选项菜单。使用菜单资源创建选项菜单的具体步骤如下。
(1)重写Activity中的onCreateOptionMenu()方法。在该方法中,首先创建衣蛾用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,关键代码如下:
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; }(2)重写onOptionsItemSelected(),用于当菜单项被选中的做出相应的处理。
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement Toast.makeText(MainActivity.this,item.getTitle(),Toast.LENGTH_SHORT).show(); return super.onOptionsItemSelected(item); }
当用户长时间按键不放是,弹出的菜单就是上下文菜单。步骤:
(1)在Activity的onCreate()方法注册上下文菜单
private TextView testMenu=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); testMenu= (TextView) findViewById(R.id.testMenu); registerForContextMenu(testMenu); //为文本框注册上下文菜单 }(2)重写Activity中的onCreateContextMenu()方法。在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析出来的惨淡保存在menu中,最后为菜单设置图标和标题。关键代码如下:
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater=new MenuInflater(this); //实例化一个MenuInflater对象 inflater.inflate(R.menu.menu_main,menu); //解析菜单文件 menu.setHeaderIcon(R.drawable.ic_launcher); //为菜单头设置图标 menu.setHeaderTitle("请选择"); //为菜单头设置图标 }
@Override public boolean onContextItemSelected(MenuItem item) { Toast.makeText(MainActivity.this,item.getTitle(),Toast.LENGTH_SHORT).show(); return super.onContextItemSelected(item); }
标签:android contextmenu menu 菜单
原文地址:http://blog.csdn.net/agonie201218/article/details/45361999