通过menu resource 定义menu结构,具体做法如下:
在/res目录下新建目录 /menu,在menu目录下新建名为example_menu.xml的xml文件,xml文件代码如下
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:title="@string/item1"
/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:onClick="onGroupItemClick"
android:title="@string/group_item1"
/>
<item android:id="@+id/group_item2"
android:onClick="onGroupItemClick"
android:title="@string/group_item2"
/>
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title"
>
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
其中上述文件中引用了/values/strings.xml中常量,strings.xml文件定义如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Example_Menu!</string>
<string name="app_name">Example_Menu</string>
<string name="item1">item1</string>
<string name="group_item1">group_item1</string>
<string name="group_item2">group_item2</string>
<string name="submenu_title">submenu_title</string>
<string name="submenu_item1">submenu_item1</string>
</resources>
最后我们在activity文件中写如下代码生成并显示menu对象,只需复写activity中的onCreateOptionsMenu和onMenuItemSelected函数。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//获取Menu文件
MenuInflater inflater = this.getMenuInflater();
//把获取的menu文件实例填充到menu对象中
inflater.inflate(R.menu.example_menu, menu);
return true;
}
/**
* 响应注册了这个方法的MenuItem
* @param item
*/
public void onGroupItemClick(MenuItem item) {
Log.d("h", ""+item.getItemId());
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(this, "你点击了我"+item.getItemId(), Toast.LENGTH_SHORT).show();
return super.onMenuItemSelected(featureId, item);
}
运行效果如下:
这种构造menu的方法很方便吧。
遇到的问题:
大家应该注意到example_menu.xml文件中两个item标签中android:onClick="onGroupItemClick"属性应该响应我在activity中定义的onGroupItemClick(MenuItem item)方法的,
不过结果并不是那样,而帮助文档中说得很清除这个方法执行的优先级高于 onMenuItemSelected,但这个方法确实没有执行到,
一个可能是SDK版本问题,机子上的2.2,难道3.0才支持?求解答
- 大小: 50.3 KB
分享到:
相关推荐
在Android中,主要有三种类型的Menu:选项菜单(OptionsMenu)、上下文菜单(Context Menu)和弹出窗口菜单(PopupMenu)。 二、创建Menu 1. 在Activity的XML布局文件中不直接创建Menu,而是通过在res/menu目录下...
这可以使用`addView()`和`removeView()`方法来完成,为用户提供一种隐藏和显示菜单的交互方式。 三、动画效果 为了增强另类Menu的视觉吸引力,可以使用Android的动画库添加过渡效果。例如,可以使用`ObjectAnimator...
在Android开发中,自定义`Menu`是一种常见的需求,它允许开发者根据应用的特性提供更加个性化的操作选项。本文将深入探讨如何在Android中实现自定义`Menu`,结合源码解析以及工具的使用,帮助你更好地理解这一过程。...
在Android应用开发中,滑动菜单(Sliding Menu)是一种常见的设计模式,它允许用户通过从屏幕边缘向内滑动来展示隐藏的侧边栏菜单。这种设计在移动设备上非常流行,因为它提供了便捷的导航方式,特别是在内容丰富的...
在Android应用开发中,下拉菜单(Dropdown Menu)是一种常见的用户界面组件,它允许用户从一组预定义的选项中选择一个。"Android DropDownMenu"指的是一个特定的实现,它旨在提供一个简单易用且优雅的下拉菜单解决...
在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的设计模式,用于在多个主要功能之间切换。这个名为"Android-Android-NavMenu-master"的项目,专注于封装了一个底部导航栏组件,它包含了显示未...
Toast是Android提供的一种轻量级的提示方式,它会在屏幕底部短暂显示信息,然后自动消失。创建Toast可以通过以下步骤: ```java String message = "这是个Toast消息"; Toast.makeText(MyActivity.this, message, ...
在Android中,菜单通常分为三种类型:Option Menu、Context Menu和Popup Menu。Option Menu通常在屏幕顶部显示,与ActionBar或Toolbar关联;Context Menu在长按某项内容时出现;Popup Menu则在需要时动态弹出。本...
在Android编程中,上下文菜单(Context Menu)是一种特殊的对话框,它只显示与当前屏幕上的特定项目相关的操作。用户通常通过长按某个视图元素来触发上下文菜单的显示。创建和管理上下文菜单涉及到注册菜单项、重写`...
在Android中,处理菜单事件主要涉及两个回调方法:`onCreateOptionsMenu(Menu menu)` 和 `onOptionsItemSelected(MenuItem item)`。这两个方法位于`Activity`类中,通过重写它们,我们可以添加、定制和响应菜单项。 ...
在Android应用开发中,下拉菜单(通常称为Dropdown Menu或Spinner)是一种常见的用户界面元素,它允许用户从一组预定义的选项中选择一个。在本篇文章中,我们将深入探讨Android的下拉菜单实现,主要围绕"Android ...
总之,Android的Menu功能是构建用户交互界面不可或缺的一部分,它为用户提供了一种直观的方式来执行各种操作。通过熟练掌握Menu的使用,开发者可以创建更加友好和功能丰富的应用程序。"study_menu.zip"中的代码示例...
在安卓(Android)系统中,Menu是一个至关重要的组件,它为用户提供了一种交互方式,用于展示应用程序中的操作选项。在Android应用开发中,理解和掌握Menu的源码对于优化用户体验和提高代码质量至关重要。"安卓...
在Android应用开发中,分享菜单是用户分享内容到其他应用程序(如社交媒体、邮件客户端等)的一种常见方式。它通常通过一个对话框或下拉列表的形式展示,包含了可以分享到的各种应用选项。 在描述中,“android-...
菜单通常在屏幕的顶部或者底部显示,提供了一种简洁的方式让用户与应用进行交互。本文将深入探讨Android中`.Menu`的使用,包括其创建、配置以及在不同场景下的应用。 首先,我们来了解如何创建一个菜单。在Android...
它们为用户提供了一种直观的方式来访问和操作应用的功能。 在源码层面,`OptionsMenu`的创建过程始于`Activity`的`onCreateOptionsMenu()`方法。开发者在这个方法中可以添加菜单项,通过`MenuInflater`来填充菜单...
在Android应用开发中,侧滑菜单(Siding Menu)是一种常见的设计模式,它通常用于提供一个隐藏的导航面板,用户可以向左或向右滑动主屏幕来展示或隐藏这个菜单。这种设计允许用户轻松访问应用程序的主要功能,而不会...
首先,`ListActivity`是Android SDK提供的一种特殊的`Activity`,它专注于显示一个列表数据。这个类简化了创建列表视图的过程,因为开发者不需要单独定义布局文件中的ListView。要使用`ListActivity`,你需要在XML...
在Android应用开发中,Flex是一种常用的框架,它允许开发者创建具有丰富用户界面的移动应用程序。在本主题中,我们将深入探讨如何使用Flex来更改ViewMenu的外观,这对于提升应用程序的用户体验至关重要。首先,理解...