android中常用菜单(menu)的基本知识

时间:2022-01-02 20:53:31

(一)选项菜单

1、简单的创建菜单:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); // 添加菜单
menu.add("菜单选项1");
/*
* pram1:组号 pram2:唯一的ID号 pram3:排序号 pram4:标题
*/
menu.add(1, Menu.FIRST, Menu.FIRST, "菜单选项2"); // 希望显示菜单就返回true
return true;
}

2、菜单的分组以及简单属性:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); int group1 = 1;
int group2 = 2;
menu.add(group1, 1, 1, "item1");
menu.add(group1, 2, 2, "item2");
menu.add(group2, 3, 3, "item3");
menu.add(group2, 4, 4, "item4"); // menu.removeGroup(group1);//删除一个组
// menu.setGroupVisible(group1, false);//设置可见性
// menu.setGroupEnabled(group2, false);//设置是否可点
// menu.setGroupCheckable(group2, true, t);//设置一组菜单的勾选情况
return true;
}

3、响应菜单

一、通过onOptionsItemSelected方法

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
// 响应每个菜单项(通过菜单项的ID)
switch (item.getItemId()) {
case 1:
// do something here
break;
case 2:
// do something here
break;
case 3:
// do something here
break;
case 4:
Toast.makeText(this, "hello", 0).show();
break;
default:
// 对没有处理的事件,交给父类来处理
return super.onOptionsItemSelected(item);
}
//返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了
return true;
}

二、通过监听

 //第一步:创建监听器类
class MyMenuItemClickListener implements OnMenuItemClickListener {
@Override
publicboolean onMenuItemClick(MenuItem item) {
// do something here...
return true; //finish handling
}
}
//第二步:为菜单项注册监听器
menuItem.setOnMenuItemClickListener(new MyMenuItemClickListener());

三、通过Intent

(二)子菜单subMenu

注意:Menu可以包含多个SubMenu及menuItem,SubMenu可以包含多个MenuItem,,但是SubMenu不能包含SubMenu。

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
//一个menu中可以添加多个子菜单
SubMenu subMenu=menu.addSubMenu(1,1, 0, "子菜单"); //在子菜单中添加多个菜单选项
MenuItem menuItem1=subMenu.add(1, 1, 0, "菜单选项1");
subMenu.add(1, 2, 1,"菜单选项2");
subMenu.add(1, 3, 2,"菜单选项3");
subMenu.add(1, 4, 3,"菜单选项4"); //子菜单不支持显示图标,尽管这样设置不会报错
subMenu.setIcon(R.drawable.ic_launcher); //设置菜单选项的图标
menuItem1.setIcon(R.drawable.ic_launcher);
return true;
}

(三)上下文菜单ContextMenu

 package com.zzw.contextMenu;

 import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast; public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView); simpleShowList();
//1.在activity的onCreate方法中为一个view注册上下文菜单
this.registerForContextMenu(listView); } //2.在onCreateContextMenu中生成上下文菜单。
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
Log.d(TAG, "onCreateContextMenu_start"); menu.setHeaderTitle("上下文菜单标题");
menu.add(0, 1, 0, "选项1");
menu.add(0, 2, 0, "选项2");
menu.add(0, 3, 0, "选项3"); Log.d(TAG, "onCreateContextMenu_stop");
} //3.在onContextItemSelected中响应上下文菜单项。
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.d(TAG, "onContextItemSelected_start");
int item_id = item.getItemId();
switch (item_id) {
case 1:
Toast.makeText(this, "我是上下文菜单选项1", 0).show();
break;
      //如果想要处理ListView中的数据通过AdapterContextMenuInfo info=(AdapterContextMenuInfo) item.getMenuInfo()获得info,通过info得到listView中的id,position等
case 2: break;
case 3: break; default:
return super.onContextItemSelected(item);
}
Log.d(TAG, "onContextItemSelected_stop");
return true;
} private void simpleShowList() {
Log.d(TAG, "simpleShowList_start");
String[] showList = { "显示1", "显示2", "显示3", "显示4" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_expandable_list_item_1, showList); listView.setAdapter(adapter);
Log.d(TAG, "simpleShowList_stop");
} }

android中常用菜单(menu)的基本知识

android中常用菜单(menu)的基本知识

(四)通过XML文件添加菜单

1.在res文件下创建menu文件夹,一般默认有的,在里面new出一个Android xml File来编辑自己的菜单

2.编辑自己的xml

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- group是分组 -->
<group android:id="@+id/group1" > <!-- item是一个菜单选项 -->
<item
android:id="@+id/item1"
android:title="菜单选项1(子菜单)">
<!-- 在一个item中添加一个menu就是子菜单 -->
<menu>
<!-- 子菜单中的菜单选项 -->
<item
android:icon="@drawable/ic_launcher"
android:id="@+id/item1_1"
android:title="子菜单内选项1"/>
<item
android:id="@+id/item1_2"
android:title="子菜单内选项2"/>
</menu>
</item>
<item
android:id="@+id/item2"
android:title="菜单选项2">
</item>
</group>
<group android:id="@+id/group2" >
<item
android:id="@+id/item3"
android:title="菜单选项4">
</item>
<item
android:id="@+id/item4"
android:title="菜单选项5">
</item>
</group> </menu>

3.在activity中获取:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater in = getMenuInflater();
in.inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:
break;
case R.id.item2: break; default:
return super.onOptionsItemSelected(item);
} return true;
}

android中常用菜单(menu)的基本知识

android中常用菜单(menu)的基本知识

一些基本的属性:

设置菜单icon

 <item
android:id="@+id/item1"
android:title="菜单选项1"
android:icon="@drawable/ic_launcher"
/>

设置菜单选项的可选,android:checkableBehavior,chencked

  <!-- checkableBehavior设置可选 -->
<group android:id="@+id/group1"
android:checkableBehavior="all" >
<!-- checked设置特定菜单项(被勾中) -->
<item
android:id="@+id/item1"
android:title="菜单选项1"
>
</item>
<item
android:id="@+id/item2"
android:checked="true"
android:title="菜单选项2">
</item>
</group>

android中常用菜单(menu)的基本知识

设置菜单可用不可用android:enable

  <group android:id="@+id/group1">
<item
android:id="@+id/item1"
android:title="菜单选项1"
android:enabled="true"
>
</item>
<item
android:id="@+id/item2"
android:title="菜单选项2"
android:enabled="false">
</item>
</group>

android中常用菜单(menu)的基本知识

设置菜单选项是否可见android:visible

  <group android:id="@+id/group1">
<item
android:id="@+id/item1"
android:title="菜单选项1"
android:visible="true"
>
</item>
<item
android:id="@+id/item2"
android:title="菜单选项2"
android:visible="false">
</item>
</group>

android中常用菜单(menu)的基本知识

详解请见:http://www.cnblogs.com/codingmyworld/archive/2011/08/21/2147829.html

android中常用菜单(menu)的基本知识的更多相关文章

  1. android中的菜单Menu

    Menu是一个接口, 他有2个子接口, SubMenu和ContextMenu; 前者菜单常见于按home键就会出现 ,后者是一个上下文菜单, 一般点击某个条目会在手机屏幕中出现一个类似悬浮窗口的菜单 ...

  2. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  3. Python编程中常用的12种基础知识总结

    原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...

  4. Android中的菜单

    本文参考自官方文档:https://developer.android.com/guide/topics/ui/menus.html Android为了维护app之间一个统一的操作习惯,提供了Menu ...

  5. Android中创建option menu

    1.首先在res目录下新建一个menu文件夹,右击res目录->New->Directory,输入文件夹名menu,点击OK. 接着在这个文件夹下再新建一个名叫main的菜单文件,右击me ...

  6. Android 中的菜单 OptionsMenu的简单应用

    OptionsMenu就是安卓手机中的菜单选项 首先 要实现对菜单的操作就要先重写OnCreateOptionsMenu(Menu menu)方法 通常有两种方法来实现对菜单中选项的添加 第一种是动态 ...

  7. Android中常用控件及属性

    在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...

  8. Android中常用布局单位

    Android在UI布局时经常用到一些单位,对单位混用直接会影响UI的显示,要想正确的在布局中使用每种单位就必须先真正的熟悉它. UI显示效果的影响因素:屏幕尺寸.屏幕密度.分辨率:而android手 ...

  9. android中常用的布局管理器

    Android中的几种常用的布局,主要介绍内容有: View视图 RelativeLayout    相对布局管理器 LinearLayout     线性布局管理器 FrameLayout     ...

随机推荐

  1. JAVA实现发送电子邮件

    相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素.废话不多说,下面开始我们 ...

  2. Jq&sol;Js收集

    判断checkbox选中的个数1.$('#del').click(function(){ var length = $("input[name='checkItem']:checked&qu ...

  3. 安装Devstack的DNS问题

    所谓的OpenStack一键安装,省去了敲键盘的麻烦,但是卡在中间出了问题也是比较尴尬的 在公司内安装经常会出现卡在下载软件的地方,有时候还会出错 trick就是换一个US的dns,比如8.8.8.8

  4. Android四个存储数据的SharedPreferences

    除了SQLite外部数据库.SharedPreferences它是一个轻量级的数据存储,其本质是基于XML文件存储key-value键值数据,通过定期用它来存储一些简单的配置信息.它的存储位置/dat ...

  5. HTML &plus; CSS短标题(二,三,四文字长度)两端对齐的方式

    今天切图碰到了一个看似好弄,却并不好弄的文本两端对齐问题.如图1-1

  6. QQ小橙团队排表机器人使用方法

    版权声明 别瞎JB玩坏了...一个群一个群导入很累的 联系QQ: 986859110 目录 网页版使用说明 登录和权限操作 团队和模板选择操作 模板使用案例 团队面板操作 老板管理 人员管理 QQ群机 ...

  7. sql 索引笔记--索引组织结构

    非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非聚集键的顺序排序和存储. 非聚集索引的叶层是由索引页而不是由数据页组成. 既可以使用聚集索引来为表或视 ...

  8. (3&period;1)mysql备份与恢复之mysqldump

    目录: 1.单实例联系 1.1.备份单个数据库联系多种参数使用 [1]mysqldump命令备份演示 [2]查看备份文件 [3]用备份文件还原 1.2.mysqldump 各类参数释义 [1]--de ...

  9. Linux中vim文本编辑器的介绍和使用方法

    vim主要模式介绍,vim命令模式. 确保系统已经安装了VIM工具 [root@panda ~]# rpm -qf `which vim` [root@panda ~]# rpm -qf `which ...

  10. ACM学习大纲

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...