Android:弹出菜单(PopupMenu)的使用
一、简介
PopupMenu 是依赖 View 存在的模态菜单。如果空间足够,它将显示在相应View的下方,否则显示在其上方。
弹出菜单的使用步骤如下:
- 实例化PopupMenu,它的构造方法需要两个参数,分别为Context以及PopupMenu依赖的View对象。
- 使用MenuInflater将Menu资源加载到PopupMenu.getMenu()返回的Menu对象中。
- 调用setOnMenuItemClickListener方法为PopupMenu设置点击监听器。
- 调用PopupMenu.show()将弹出菜单显示出来。
二、实例
XML代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/popup_add"
android:title="添加"/>
<item android:id="@+id/popup_delete"
android:title="删除"/>
<item android:id="@+id/popup_more"
android:title="更多"/>
</menu>
Java代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popup_menu);
findViewById(R.id.popup_menu_view).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popupMenu=new PopupMenu(PopupMenuActivity.this,view);//1.实例化PopupMenu
getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());//2.加载Menu资源
//3.为弹出菜单设置点击监听
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.popup_add:
Toast.makeText(PopupMenuActivity.this,"添加",Toast.LENGTH_SHORT).show();
return true;
case R.id.popup_delete:
Toast.makeText(PopupMenuActivity.this,"删除",Toast.LENGTH_SHORT).show();
return true;
case R.id.popup_more:
Toast.makeText(PopupMenuActivity.this,"更多",Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
});
popupMenu.show();//4.显示弹出菜单
}
});
}
当用户选择菜单项或触摸菜单以外的区域时,系统就会清除弹出菜单,可以使用 PopupMenu.OnDismissListener() 监听这一事件。