安卓中菜单的使用
2017-01-26 21:19
169 查看
OptionsMenu
OptionsMenu创建方式
1.菜单资源
Menu菜单的属性:showAsAction 属性共有五个值:ifRoom、never、always、withText、collapseActionView,可以混合使用。
ifRoom
会显示在 Item 中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个数并不仅仅局限于4个,依据屏幕的宽窄而定
never
永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义 item 的时候,最好把标题都带上。
always
无论是否溢出,总会显示。
withText
withText值示意 Action bar 要显示文本标题。Action bar 会尽可能的显示这个标题,但是,如果图标有效并且受到 Action bar 空间的限制,文本标题有可能显示不全。
collapseActionView 一般结合 ifRoom 实现 SearchView 的效果。
命名空间使用app的否则报错。因为当前是V7包的AppCompatActivity
app:showAsAction=”always”
语法(SYNTAX): <?xml version="1.0" encoding="utf-8"?> <menuxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:id="@[+][package:]id/resource_name" android:title="string" android:titleCondensed="string" android:icon="@[package:]drawable/drawable_resource_name" android:onClick="method name" android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"] android:actionLayout="@[package:]layout/layout_resource_name" android:actionViewClass="class name" android:actionProviderClass="class name" android:alphabeticShortcut="string" android:numericShortcut="string" android:checkable=["true" | "false"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer"/> <groupandroid:id="@[+][package:]id/resource name" android:checkableBehavior=["none" | "all" | "single"] android:visible=["true" | "false"] android:enabled=["true" | "false"] android:menuCategory=["container" | "system" | "secondary" | "alternative"] android:orderInCategory="integer"> <item/> </group> <item> <menu> <item/> </menu> </item> </menu>
2.java代码
//在Activity 中重写该方法 用于创建 OptionMenu。注意: 官方文档明确说明,该方法必须返回 true 才会创建菜单。
@Override public boolean onCreateOptionsMenu(Menu menu) { //菜单加载器加载菜单资源 getMenuInflater().inflate(R.menu.main,menu); //java代码动态添加菜单项 menu.add(Menu.NONE,123,0,"系统设置"); return true; }
菜单项点击事件 onOptionsItemSelected()
//选项菜单 Item 的选择时间回调方法 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: Toast.makeText(this, "action_add", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); }
onMenuItemSelected()
该方法是 Activity 的方法。 通用的菜单点击事件回调函数。内部会根据菜单的类型,去调用 onOptionsItemSelected()方法。以及 onContextItemSelected()方法等。ContextMenu
ContextMenu创建方式
在Activity 中重写该方法来创建 ContextMenu;具体与 OptionsMenu 类似onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
注意: 上下文菜单可以设置以下属性。
menu.setHeaderIcon(R.drawable.ic_launcher);//设置上下文的图标
menu.setHeaderTitle(“提示!”);//设置上下文的头部标题
menu.setHeaderView(view)//设置上下文的头部 View
上下文菜单项点击事件
在 Activity 中重写该方法 来获取上下文的点击事件回调onContextItemSelected//获取上下文点击事件
提示: 如果是 ListView 等列表控件注册了上下文菜单,则得到长按的 Item 的位置可以通过以下代码来获取:
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); int position = menuInfo.position;
上下文菜单绑定注册
通过以下方法来为某一个控件 注册上下文菜单。registerForContextMenu(view);//注册激活上下文菜单的组件
(注意:弹出上下文菜单是长按该组件)
PopupMenu
PopupMenu的创建
PopupMenu popupMenu = new PopupMenu(this, view);//创建 Popup 菜单 //加载 资源菜单 到 PopupMenu getMenuInflater().inflate(R.menu.my_menu, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Toast.makeText(MainActivity.this, item.getItemId(), Toast.LENGTH_LONG).show(); return true; } }); popupMenu.show(); popupMenu.setOnDismissListener//菜单关闭监听
相关文章推荐
- 安卓开发-使用XML菜单布局简单介绍
- 安卓:一个简单的综合使用(1-3周),sqlite,listview,自定义适配器,菜单,对话框,通知.....
- [一个星期自学安卓]使用xml加载菜单Menu
- 安卓:Loader访问联系人,并使用菜单弹出对话框的形式添加联系人
- 安卓菜单的使用系列5:显示弹出菜单
- 安卓菜单的使用系列4:使用ActionMode显示菜单
- 安卓Andriod使用入门(九)【悬浮窗菜单】
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
- 安卓菜单的使用系列3:显示上下文菜单
- 笔记17 Animator 安卓属性动画 仿直线菜单 代码量极少抛弃使用animation
- 安卓菜单的使用系列2:使用xml文件显示菜单
- 安卓Andriod使用入门(一)【圆形Menu菜单】
- 安卓学习笔记:使用PopupWindow创建简单菜单
- 安卓菜单的使用系列1:使用java代码显示菜单
- 安卓 类似美团等菜单的 使用
- 使用DrawerLayout实现安卓侧拉菜单
- 一个使用jsp生成的web菜单
- 使用Popup窗口创建无限级Web页菜单(7)
- 使用Popup窗口创建无限级Web页菜单(4)
- Win32汇编教程五 菜单和加速键的使用