android简单实例--------普通菜单optionMenu,上下文菜单ContextMenu,弹出式菜单的使用PopuMenu(一)
2016-02-25 16:19
656 查看
放一些android中三种菜单的使用,包括最常见的菜单栏,还有上下文菜单ContextMenu,以及弹出式菜单PopupMenu的简单应用与对应方法参数详解。
-------------------------------------------------------
第一种:普通菜单栏 :optionMenu
先看效果图:
核心代码:
在Activity中重写这个方法,然后通过getMenuInflater()方法加载布局,menu文件夹下面的xml,最后返回true。这样子就可以显示出菜单栏了。
XML文件如下:
<item>为每一个单一选项,其中有4个属性。id 不用介绍,唯一标识。
orderInCategory:决定选项的排列顺序,随意给一个整数值就行,从小到大对应的是弹出菜单中得从上到小。如果orderInCategory的值一样,显示顺序会按xml文件中的添加顺序显示。
showAsAction:是否在actionbar上显示。图中已经标出actionBar的位置在哪里了。有五个属性可以设置,这里介绍三个: never表示从不在actionbar位置显示。always表示总是在actionBar位置显示,ifRoom表示如果有位置的话在ActionBar显示。
title:表示的就是对应内容。。
接下来说一下如何设置点击事件:
在activity中重写如下方法:
菜单选项被点击了,此方法就会被回调,我们可以再方法内实现处理逻辑:
可以看出,根据item.getItemId()来判断哪一个选项被点击了,然后对应进行处理就行了。效果图:
菜单栏还可以是两级的,就是你点击完一个条目然后显示这个条目所要显示的字条目,如图:
这是点击完中国后显示的,其实很简单,在XML中这样写:
<item
android:id="@+id/item_china"
android:orderInCategory="100"
android:showAsAction="never"
android:title="中国">
<menu>
<item
android:id="@+id/item_beijing"
android:orderInCategory="200"
android:showAsAction="never"
android:title="北京"/>
<item
android:id="@+id/item_shanghai"
android:orderInCategory="200"
android:showAsAction="never"
android:title="上海"/>
</menu>
</item>
在原来中国的<item>中添加想要显示的子菜单即可。。。。
-------------------------------------------------------
原创,我在这里说明一下,这里的例子都是非常简单的例子,更适合初学者,只有先学会用,才能研究更深层次的东西,初学者千万不要陷入诸如每个参数到底是什么意思,这里不这样,如果那样会怎么样,这是无穷无尽的问题,非常影响入门,只有用熟悉之后,才更容易的去纠结这些东西,所以我在这里不写这些东西了。只适合初学者看看的例子。。。
-------------------------------------------------------
第一种:普通菜单栏 :optionMenu
先看效果图:
核心代码:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.demo4, menu); return true; }
在Activity中重写这个方法,然后通过getMenuInflater()方法加载布局,menu文件夹下面的xml,最后返回true。这样子就可以显示出菜单栏了。
XML文件如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item_china" android:orderInCategory="100" android:showAsAction="never" android:title="中国"/> <item android:id="@+id/item_japan" android:orderInCategory="200" android:showAsAction="never" android:title="日本"/> <item android:id="@+id/item_america" android:orderInCategory="300" android:showAsAction="never" android:title="美国"/> <item android:id="@+id/item_kindom" android:orderInCategory="300" android:showAsAction="never" android:title="英国"/> <item android:id="@+id/item_action_bar" android:showAsAction="always" android:title="action bar"/> </menu>
<item>为每一个单一选项,其中有4个属性。id 不用介绍,唯一标识。
orderInCategory:决定选项的排列顺序,随意给一个整数值就行,从小到大对应的是弹出菜单中得从上到小。如果orderInCategory的值一样,显示顺序会按xml文件中的添加顺序显示。
showAsAction:是否在actionbar上显示。图中已经标出actionBar的位置在哪里了。有五个属性可以设置,这里介绍三个: never表示从不在actionbar位置显示。always表示总是在actionBar位置显示,ifRoom表示如果有位置的话在ActionBar显示。
title:表示的就是对应内容。。
接下来说一下如何设置点击事件:
在activity中重写如下方法:
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { return super.onMenuItemSelected(featureId, item); }
菜单选项被点击了,此方法就会被回调,我们可以再方法内实现处理逻辑:
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { String message = null ; switch (item.getItemId()) { case R.id.item_china: message = "中国"; break; case R.id.item_japan: message = "日本"; break; case R.id.item_america: message = "美国"; break; case R.id.item_action_bar: message = "action bar"; break; } Toast.makeText(this, message+"被点击了", Toast.LENGTH_LONG).show(); return super.onMenuItemSelected(featureId, item); }
可以看出,根据item.getItemId()来判断哪一个选项被点击了,然后对应进行处理就行了。效果图:
菜单栏还可以是两级的,就是你点击完一个条目然后显示这个条目所要显示的字条目,如图:
这是点击完中国后显示的,其实很简单,在XML中这样写:
<item
android:id="@+id/item_china"
android:orderInCategory="100"
android:showAsAction="never"
android:title="中国">
<menu>
<item
android:id="@+id/item_beijing"
android:orderInCategory="200"
android:showAsAction="never"
android:title="北京"/>
<item
android:id="@+id/item_shanghai"
android:orderInCategory="200"
android:showAsAction="never"
android:title="上海"/>
</menu>
</item>
在原来中国的<item>中添加想要显示的子菜单即可。。。。
-------------------------------------------------------
原创,我在这里说明一下,这里的例子都是非常简单的例子,更适合初学者,只有先学会用,才能研究更深层次的东西,初学者千万不要陷入诸如每个参数到底是什么意思,这里不这样,如果那样会怎么样,这是无穷无尽的问题,非常影响入门,只有用熟悉之后,才更容易的去纠结这些东西,所以我在这里不写这些东西了。只适合初学者看看的例子。。。
相关文章推荐
- Android 5.0 CardView 笔记
- eclipse 和android studio 导入github项目
- android:clipToPadding和android:clipChildren
- android框架
- Android应用开发之所有动画使用详解
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- 【No12.】一年多的沉淀,没有更新文章,这次带给大家带来一个框架的搭建与使用!
- Android4开发入门经典 之 第一部分:Android入门基础
- android 深入理解LayoutInflater.inflate()
- android中用户头像设置的一点心得——关于bitmap被回收的问题
- Android-->反编译初探(mac环境配置)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 首字母索引侧栏--漂亮且实用!!
- 【转】Android最佳性能实践(四)——布局优化技巧
- AsyncTask的问题与缺陷
- Android学习笔记day6
- 【转】Android最佳性能实践(三)——高性能编码优化
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android输入法的显示或隐藏
- Android-社会化分享