PopupMenu的创建,使用及常见用法
一:功能概述
PopupMenu
可以非常方便的在指定view的下面显示一个弹出菜单,该弹出菜单的位置是可变的。在一些应用里面例如浏览器里面长按屏幕会显示弹出菜单。
二:创建基本流程
1:创建菜单布局
先在res
目录下新建menu
菜单,如图所示
接着自定义一个xml布局,图中是我为了方便测试建立两个布局文件,这里不用疑惑。
xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/sub_item_1"
android:title="Save As PDF"/>
<item
android:id="@+id/sub_item_2"
android:title="Save As Html"/>
<item
android:id="@+id/sub_item_3"
android:title="Refresh"/>
<item
android:id="@+id/sub_item_4"
android:title="Translate"/>
<item
android:id="@+id/sub_item_5"
android:title="Look Up Source"/>
</menu>
效果图:
每个<item>
标签内有两个属性(实际上还有其它非必须属性)id
,title
。前者作用是设置资源id,后者是为每个选项设置文本。
2:创建Java代码(在哪里需要弹出来就调用它)
1 private void showPopupMenu(View v){
2 popupMenu = new PopupMenu(MainActivity.this,v);
3 MenuInflater inflater = popupMenu.getMenuInflater();
4 inflater.inflate(R.menu.long_menu,popupMenu.getMenu());
5 popupMenu.setOnMenuItemClickListener(MainActivity.this);
6 popupMenu.show();
7 }
说明:该自定义方法内传入一个对象View
的v
参数,作用是当前要展示PopupMenu的依附view
对象。PopupMenu的生成我是采用了类成员变量方式,如果读者要直接拷贝只需前面改为PopupMenu popupMenu = new PopupMenu(MainActivity.this,v);
即可。第4行是把我们创建的menu
里面的菜单名称传入。其余的参数例如第二行和第五行里面的MainActivity.this
是context。
3:展现/消失
要展现的话调用我们上面自定义方法即可,消失调用方法如下:
popupMenu.dismiss();
4:对菜单子项设置动作监听
重写onOptionsItemSelected(MenuItem item)
即可。例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case sub_item_1:
break;
case sub_item_2:
break;
case sub_item_3:
break;
case sub_item_4:
break;
case sub_item_5:
break;
case sub_item_6:
break;
}
return super.onOptionsItemSelected(item);
}
这里每个case
后面跟的即是每个<item>
的id
三:基本属性
PopupMenu可以设置setOnDismissListener
来监听其消失时的事件。