Android 菜单和对话框

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上下文菜单创建:(一)注册控件
1、注册控件 前面说了可以针对每个控件都有一个上下文菜单,但
并不是每一个控件都需要上下文菜单啊。我们怎么知道 这个控件要不要上下文菜单。所以这就是注册的功能, 为需要有上下文菜单的控件注册一下。 注册的代码如下:
TextView tvHelloWorld=(TextView)findViewById(R.id.hello word);
ANDROID 菜单和对话框
Android的菜单
菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭 载Android系统的手机甚至都要有一个"Menu"键,由此可见菜单在 Android程序中的特殊性。Android SDK提供的菜单有如下几种:
选项菜单: 最常规的菜单,android中把它叫做option menu
使用XML布局实现子菜单
下面我直接在用XML实现选项菜单的xml_menu.xml文件中再添加一个 Item3菜单项,并在Item3中添加一个子菜单,源代码如下:
其实就是在Item3菜单标签的内部再添加一整套的菜单标签 可见子菜单也是一个菜单,也包含菜单中的所有部分, menu->group->item,只不过被嵌套在Item里面而已了。 添加子菜单后,点击Item3 就会跳进子菜单了。
“menu1_1”)的第一个参数; 每个标记都有很多的属性,各属性含义如下: <group>标签: ➢ id:组的Id值; ➢ heckableBehavior:用于指定菜单组内各项菜单项的选择行为,none(不可选)、all(多选 )、
single(单选); ➢ menuCategory:用于对菜单分类,指定菜单的优先级,可选值为:container、system、
子菜单: android中点击子菜单将弹出悬浮窗口显示子菜单项。子菜单不 支持嵌套,即子菜单中不能再包括其他子菜单。子菜单的处理方法与选 项菜单基本一致
上下文菜单: android中长按视图控件后出现的菜单,windows点击右键弹 出的菜单即上下文菜单。上下文菜单的创建一共分为三步:
注册: registerForContextMenu(控件对象引用);
每个activity包含一个菜单,一个菜单 又能包含多个菜单项和多个子菜单,子 菜单其实也是菜单(因为它实现了Menu 接口),因此子菜单也可以包含多个菜 单项。SubMenu继承了Menu的 addSubMenu()方法,但调用时会抛出运 行时错误。OnCreateOptionsMenu()和 OnOptionsMenuSelected()是activity中提 供了两个回调方法,用于创建菜单项和 响应菜单项的点击。
扩展菜单: 选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单 项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项 都作为“更多”菜单的子菜单项。如下图所示:
Android的菜单
android.view.Menu接口代表一个菜单,android用它来管理 各种菜单项。注意我们一般不自己创建menu,因为每个 Activity默认都自带了一个,我们要做的是为它加菜单项和 响应菜单项的点击事件。android.view.MenuItem代表每个 菜单项,android.view.SubMenu代表子菜单。其三者的关系 可以用下图来表示:
选项菜单: 最常规的菜单,android中把它叫做option menu,选项菜单可 以通过XML文件和代码来添加,通过代码添加需要覆盖
onCreateOptionsMenu(Menu menu)方法,并在该方法中使用add()方法添加 菜单,当菜单项(MenuItem)被选中时,覆盖Acitivy的 onOptionsMenuSelected()方法响应事件。
publicboolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);
// 添加4个菜单项,分成2组 int group1 =1; int gourp2 =2; menu.add(group1, 1, 1, "item 1"); menu.add(group1, 2, 2, "item 2"); menu.add(gourp2, 3, 3, "item 3"); menu.add(gourp2, 4, 4, "item 4"); // 显示菜单 returntrue; } 分组之后就能使用menu中提供的方法对组进行操作了,如下: menu.removeGroup(group1); //删除一组菜单 menu.setGroupVisible(gourp2, visible); //设置一组菜单是否可见 menu.setGroupEnabled(gourp2, enabled); //设置一组菜单是否可选 menu.setGroupCheckable(gourp2, checkable, exclusive); //设置一组菜单的勾选情况
上下文菜单创建:(三)菜单事件处理
3、菜单事件处理 当某个上下文菜单项被选中时,就会触发 onContextItemSelected(MenuItem item) 方法;
上下文菜单完整代码及实例演示
Android的菜单小结
菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载 Android系统的手机甚至都要有一个"Menu"键,由此可见菜单在Android 程序中的特殊性。Android SDK提供的菜单有如下几种:
OptionMenu选项菜单实例演示
注 意 : AndroidS DK4.0 的应用中选项菜单默
认是以列表的形式显示的。如果想让选项菜 单以G ridView的形式显示需要在项目的清单 文件中的 Ac tiv ity 标记中加入android: them e属 性,其值可以为:
对菜单项进行分组
我们还可以对菜单项进行分组:
子菜单: android中点击子菜单将弹出悬浮窗口显示子菜单项。子菜单 不支持嵌套,即子菜单中不能再包括其他子菜单。
上下文菜单: android中长按视图控件后出现的菜单,windows点击右键 弹出的菜单即上下文菜单
图标菜单: 这个比较简单,就是带icon的菜单项,需要注意的是子菜单 项、上下文菜单项、扩展菜单项均无法显示图标。
registerForContextMenu(tvHelloWorld); //注册上下文菜 单
上下文菜单创建:(二)产生菜单
2、产生菜单 在注册上下文菜单以后,所以上按的产生上下文菜单的事 件都会分派给onCreateContextMenu()方法来进行处理; 先看一下整体产生上下文菜单的代码:
上下文菜单
什么是上下文菜单? ➢ 前面我们说了系统菜单,用户只要按android上面的设置键就
能调起系统菜单。所以每个页面的系统菜单只能有一个。 ➢ 而当我们长时间按住某个ListView的Item,或者长时间按住某
个EditView控件,弹出来的那个交互菜单,就是上下文菜单。 上下文菜单是针对某个控件单独设计的。所以一个页面的上 下文菜单可以有很多个,每个控件都可以对应一个,但每个 控件也只能有一个上下文菜单。 上下文菜单处理流程: 上下文菜单从产生到处理总共需要经过三个流程: ➢ 注册----》编写菜单----》菜单项事件处理
secondary和alternative; ➢ enabled:用于指定该菜单组中的全部菜单项是否可用; ➢ visible:用于指定该菜单组中全部菜单项是否可见; <item>标签: ➢ id:菜单项的ID;必须唯一 ➢ title:用于为菜单项指定标题 ➢ icon:用于为菜单项指定图标 ➢ enabled:用于指定该菜单项是否可用 ➢ checkable:用于指定该菜单项是否可选 ➢ checked:用于指定该菜单项是否已选中 ➢ visible:用于指定该菜单项是否可见 ➢ alphabeticShortcut:用于为菜单项指定字符快捷键 ➢ numericShortcut:用于为菜单项指定数字快捷键
使用XML实现OptionMenu
在我们新建工程时,系统会自己为我们生成一个menu文件夹,在 menu文件夹下,会自动生成和XXXActivity相关联的XXX.xml,其中的内 容如下图所示:
我们可以在此文件中定义需要添加的菜单,相关的代码如下图所示:
使用XML实现OptionMenu
通过以上代码可以看到完整的Menu布局层次应该是:menu -> group -> item group标签:对应菜单中组的概念,id表示组的id值,对应于 menu.add(groupId_1, 1, 1,
使用XML实现OptionMe是在代码中使用这个布局了。
使用MenuInflater将main.xml菜单文件与menu绑定起来; 下一步是响应菜单项点击,同样,可以在onOptionsItemSelected()通过Id 过滤:
使用XML实现OptionMenu代码及演示
OptionMenu选项菜单
使用代码实现 OptionMenu选项菜单的方法: 1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当我们
第一次打开菜单时调用。在该方法中调用Menu的add(int groupId, int itemId, int order, CharSequence title)方法添加菜单项(MenuItem)。 可以调用MenuItem的setIcon()方法为菜单项设置图标。 add方法的四个参数所代表的含义如下: ➢ groupId: 是菜单的组号,android中你可以给菜单分组,以便快速 地操作同一组的菜单。 ➢ itemId:指定每个菜单项的唯一ID号,你可以自己指定,也可以让 系统来自动分配,在响应菜单时你需要通过ID号来判断哪个菜单 被点击了。因此常规的做法是定义一些ID常量,但在android中有 更好的方法,就是通过资源文件来引用。 ➢ order:代表菜单项显示顺序的编号,编号小的显示在前面。 ➢ title:代码菜单的标题 2、当菜单项(MenuItem)被选中时,覆盖Acitivy的 onOptionsMenuSelected()方法响应事件。
编写菜单: 覆盖onCreateContextMenu()方法产生菜单
菜单项事件处理:当某个上下文菜单项被选中时,就会触发 onContextItemSelected(MenuItem item) 方法
相关文档
最新文档