您的位置:首页 > 移动开发 > Android开发

android简单实例--------普通菜单optionMenu,上下文菜单ContextMenu,弹出式菜单的使用PopuMenu(一)

2016-02-25 16:19 656 查看
放一些android中三种菜单的使用,包括最常见的菜单栏,还有上下文菜单ContextMenu,以及弹出式菜单PopupMenu的简单应用与对应方法参数详解。


-------------------------------------------------------

第一种:普通菜单栏 :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>中添加想要显示的子菜单即可。。。。
-------------------------------------------------------

原创,我在这里说明一下,这里的例子都是非常简单的例子,更适合初学者,只有先学会用,才能研究更深层次的东西,初学者千万不要陷入诸如每个参数到底是什么意思,这里不这样,如果那样会怎么样,这是无穷无尽的问题,非常影响入门,只有用熟悉之后,才更容易的去纠结这些东西,所以我在这里不写这些东西了。只适合初学者看看的例子。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: