android 的Menu菜单
2016-01-19 15:19
447 查看
menu分为optionMenu和ContextOptionMenu和PopupMenu
代码如下
使用onOptionItemSelected设置点击事件
代码如下
在onOptionsItemSelected设置点击事件
在onCreateContextMenu方法中使用填充器吧menu填充在menu中
代码
监听事件
动态的添加
在onCreateContextMenu中使用add方法添加
代码
静态的添加
使用步骤:
1.创建一个popupMenu对象;
2.调用对象的getMenuInflater把R.menu.main填充在menu中
3.设置监听
4.调用show方法显示
代码
代码如下
optionMenu
静态的创建option
使用onCreteOptionsMenu方法获取要显示的optionMenu菜单。使用getMenuInflater的inflater方法把R.menu.main填充在menu中代码如下
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
使用onOptionItemSelected设置点击事件
代码如下
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_exit: Toast.makeText(this, "点击了退出", Toast.LENGTH_SHORT).show(); break; case R.id.menu_red: Toast.makeText(this, "点击了红色", Toast.LENGTH_SHORT).show(); break; case R.id.menu_green: Toast.makeText(this, "点击了绿色", Toast.LENGTH_SHORT).show(); break; case R.id.menu_blue: Toast.makeText(this, "点击了蓝色", Toast.LENGTH_SHORT).show(); break; } return true; }main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.phone.menu.MainActivity" > <item android:id="@+id/menu_exit" android:orderInCategory="100" android:showAsAction="never" android:title="退出"/> <item android:id="@+id/menu_font_color" android:title="字体颜色设置"> <menu> <group> <item android:id="@+id/menu_red" android:title="红色"> </item> <item android:id="@+id/menu_green" android:title="绿色"> </item> <item android:id="@+id/menu_blue" android:title="蓝色"> </item> </group> </menu> </item> </menu>
动态创建OptionsMenu
在onCreateOptionsMenu方法中直接使用add添加private static final int ITEMID0 = 0; private static final int ITEMID1 = 1; private static final int ITEMID2 = 2; private static final int ITEMID3 = 3;
@Override public boolean onCreateOptionsMenu(Menu menu) { //getMenuInflater().inflate(R.menu.main, menu); menu.add(Menu.NONE, ITEMID0, Menu.NONE, "item1"); menu.add(Menu.NONE, ITEMID1, Menu.NONE, "item2"); menu.add(Menu.NONE, ITEMID2, Menu.NONE, "item3"); menu.add(Menu.NONE, ITEMID3, Menu.NONE, "item4"); return true; }
在onOptionsItemSelected设置点击事件
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case ITEMID0: Toast.makeText(this, "点击了item1", Toast.LENGTH_SHORT).show(); break; case ITEMID1: Toast.makeText(this, "点击了item2", Toast.LENGTH_SHORT).show(); break; case ITEMID2: Toast.makeText(this, "点击了item3", Toast.LENGTH_SHORT).show(); break; case ITEMID3: Toast.makeText(this, "点击了item4", Toast.LENGTH_SHORT).show(); break; } return true; }
ContextMenu
静态的添加在onCreateContextMenu方法中使用填充器吧menu填充在menu中
代码
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { getMenuInflater().inflate(R.menu.main, menu); super.onCreateContextMenu(menu, v, menuInfo); }
监听事件
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.collect: Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show(); break; case R.id.unfavorite: Toast.makeText(this, "取消收藏", Toast.LENGTH_SHORT).show(); break; case R.id.color_red: Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show(); break; case R.id.color_green: Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show(); break; case R.id.color_blue: Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show(); break; } return true; }注册,使用contextMenu必须注册,把contextMenu注册在那一view控件中,长按那个控件就会出现ContextMenu菜单
/**设置listview的适配器,*/ private void initViews() { String[] names=getResources().getStringArray(R.array.name); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names); setListAdapter(adapter); registerForContextMenu(getListView());//注册contextMenu }
动态的添加
在onCreateContextMenu中使用add方法添加
代码
private static final int ITEMID0 = 0; private static final int ITEMID1 = 1;
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(Menu.NONE, ITEMID0, Menu.NONE,"收藏" ); menu.add(Menu.NONE, ITEMID1, Menu.NONE,"取消收藏" ); super.onCreateContextMenu(menu, v, menuInfo); }在onContextItemSelected中设置监听
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case ITEMID0: Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show(); break; case ITEMID1: Toast.makeText(this, "取消收藏", Toast.LENGTH_SHORT).show(); break; } return true; }注册:与静态的注册一样
/**设置listview的适配器,*/ private void initViews() { String[] names=getResources().getStringArray(R.array.name); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names); setListAdapter(adapter); registerForContextMenu(getListView());//注册contextMenu }PopupMenu
静态的添加
使用步骤:
1.创建一个popupMenu对象;
2.调用对象的getMenuInflater把R.menu.main填充在menu中
3.设置监听
4.调用show方法显示
代码
public void click(View view){ PopupMenu pm=new PopupMenu(this, view); pm.getMenuInflater().inflate(R.menu.main, pm.getMenu()); pm.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.collect: Toast.makeText(MainActivity.this, "收藏", Toast.LENGTH_SHORT).show(); break; case R.id.unfavorite: Toast.makeText(MainActivity.this, "取消收藏", Toast.LENGTH_SHORT).show(); break; case R.id.color_red: Toast.makeText(MainActivity.this, "红色", Toast.LENGTH_SHORT).show(); break; case R.id.color_green: Toast.makeText(MainActivity.this, "绿色", Toast.LENGTH_SHORT).show(); break; case R.id.color_blue: Toast.makeText(MainActivity.this, "蓝色", Toast.LENGTH_SHORT).show(); break; } return true; } }); pm.show(); }动态添加
代码如下
private static final int ITEMID0 = 0; private static final int ITEMID1 = 1;
private static final int GROUPID = 2;
private static final int ITEMID2 = 3;
private static final int ITEMID3 = 4;
private static final int ITEMID4 = 5;
PopupMenu pm=new PopupMenu(this, view); Menu menu = pm.getMenu(); menu.add(Menu.NONE, ITEMID0, Menu.NONE, "收藏"); menu.add(Menu.NONE, ITEMID1, Menu.NONE, "取消收藏"); SubMenu subMenu = menu.addSubMenu("字体颜色"); subMenu.add(GROUPID, ITEMID2, Menu.NONE, "红色"); subMenu.add(GROUPID, ITEMID3, Menu.NONE, "绿色"); subMenu.add(GROUPID, ITEMID4, Menu.NONE, "蓝色"); pm.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case ITEMID0: Toast.makeText(MainActivity.this, "收藏", Toast.LENGTH_SHORT).show(); break; case ITEMID1: Toast.makeText(MainActivity.this, "取消收藏", Toast.LENGTH_SHORT).show(); break; case ITEMID2: Toast.makeText(MainActivity.this, "红色", Toast.LENGTH_SHORT).show(); break; case ITEMID3: Toast.makeText(MainActivity.this, "绿色", Toast.LENGTH_SHORT).show(); break; case ITEMID4: Toast.makeText(MainActivity.this, "蓝色", Toast.LENGTH_SHORT).show(); break; } return true; } }); pm.show();
相关文章推荐
- Android Studio之Gradle多渠道打包
- 常用Android开发组件之图像类组件
- Gradle常用命令使你更敏捷的使用androidstudio
- 开源分享三(炫酷的Android Loading动画)
- Android Studio 设置内存大小及原理
- Android中ButterKnife框架
- Android绘制流程
- 关于百度推送点击通知,跳转的问题(Android)
- android之AsyncTask真正解析
- android开发环境配置
- Mac系统下对Android apk进行反编译
- android textview设置字体的行距和字间距
- Android中Notification的用法汇总
- Android属性动画深入分析:让你成为动画牛人
- Android:Moring-早安闹钟开发过程记录(四)
- Android开发使用的常见第三方框架汇总
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android:霓虹灯
- Android L中水波纹点击效果的实现
- Android 通过JNI实现守护进程,保证Service服务不被杀死