Android 菜单, option menu 和 context menu (右键菜单)
来源:互联网 发布:淘宝情侣店铺有真的吗 编辑:程序博客网 时间:2024/04/25 18:52
1. 菜单分为option menu 和 context menu (右键菜单)
创建菜单的方式有两种: 通过xml配置 和 代码生成
菜单的样式 4.0 后有变化,如果要回到之前2.x的样式可以配置activity的属性 android:theme="@android:style/Theme"
4.0后的菜单不能设置icon , 可以通过实例中的方法设置
option menu 只需创建 和 监听事件, context在创建之前需要在某一个view上注册
MainActivity.java
package com.example.menu_actionbar;import java.lang.reflect.Method;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.app.ListActivity;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.view.View;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.ArrayAdapter;import android.widget.Toast;public class MainActivity extends ListActivity {private String[] colors = {"red", "green", "blue"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, colors);setListAdapter(adapter);//ContextMenu 右键菜单效果, 使用前先注册到对应的View, 一般在ListView上使用registerForContextMenu(getListView());}//Context Menu, 创建 和 事件响应@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {getMenuInflater().inflate(R.menu.main, menu);setIconEnable(menu, true);super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {//info知道是点击的哪个listviewAdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();switch (item.getItemId()) {case R.id.menu_settings:Toast.makeText(this, "click setting item, "+info.position, Toast.LENGTH_SHORT).show();break;case R.id.menu_call:Toast.makeText(this, "click call item"+info.position, Toast.LENGTH_SHORT).show();break;case R.id.menu_edit:Toast.makeText(this, "click edit item"+info.position, Toast.LENGTH_SHORT).show();break;default:break;}return super.onContextItemSelected(item);}//OptionsMenu@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//方式一: 通过xml配置menugetMenuInflater().inflate(R.menu.main, menu);setIconEnable(menu, true);//方式二: 代码添加//menu.add(0, 1, Menu.NONE, "Send");//SubMenu subMenu = menu.addSubMenu(0, 2, Menu.NONE, "Edit");//subMenu.add(1, 21, 1, "Edit1");//subMenu.add(1, 22, 2, "Edit2");//add 方法的参数//groupId,组别,用来划分itemid的。一般为Menu.NONE//itemId,ID。是menu识别编号,供识别menu用的,很重要//order,顺序。这个参数的大小决定菜单选项出现的先后顺序。顺序按照参数由小到大//title,显示文本return true;}//OptionsMenu item被选中的触发事件 @Overridepublic boolean onOptionsItemSelected(MenuItem item) {Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();return super.onOptionsItemSelected(item);}// 4.0 后不能设置icon的原因是 MenuBuilder中默认的setOptionalIconsVisible被设置falseprivate void setIconEnable(Menu menu, boolean enable) { try {Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);m.setAccessible(true);//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)m.invoke(menu, enable);} catch (Exception e) {e.printStackTrace();} }}res/menu/main.xml 菜单配置
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings" android:icon="@android:drawable/ic_menu_set_as" /> <item android:menuCategory="container" android:id="@+id/menu_edit" android:title="Edit" android:icon="@android:drawable/ic_menu_edit"> <menu> <item android:title="Edit title" android:visible="true" android:enabled="true"/> <item android:title="Edit text" android:visible="true" android:enabled="true"/> </menu> </item> <item android:id="@+id/menu_call" android:title="Call" android:icon="@android:drawable/ic_menu_call"/></menu>
0 0
- Android 菜单, option menu 和 context menu (右键菜单)
- Android 选项菜单 Option Menu
- Android编程 - Option Menu选项菜单&& Context Menu上下文菜单基本使用
- Android Context Menu和Options Menu菜单的区别
- android 上下文菜单Context Menu
- android 上下文菜单Context Menu
- android 上下文菜单Context Menu
- android上下文菜单Context Menu
- android的Context Menu菜单
- Option Menu 选项菜单
- OPTION Menu菜单
- 选项菜单(option Menu)
- 选项菜单Option Menu
- Context Menu上下文菜单
- Android 的上下文菜单: Context Menu
- Android 的上下文菜单: Context Menu
- Android 的上下文菜单: Context Menu
- Android 的上下文菜单: Context Menu
- Timer和ScheduledThreadPoolExecutor小例子
- ISO language name map LCID
- windows平台下搭建lighttpd+php+sqlite
- 关于富头像上传的使用方法
- Android中的“再按一次返回键退出程序”实现
- Android 菜单, option menu 和 context menu (右键菜单)
- activex控件开发时如何用ie8进行调试
- 自定义弧形渐变进度条功能
- hadoop1.1.2配置文件
- 第十二周项目3——6 银行系统
- 2015-1-9_sjsy游戏服务器编程
- C# 实现最简单的FTP下载功能
- 关于android的listview前端属性总结
- 操作系统精髓与设计原理学习笔记九:IO管理和磁盘调度