在Activity中使用Menu和PopupMenu
流程:
- 点击res目录新建Android resouce file文件,选择resoucetype为menu,然后可以创建如下菜单的布局:
1 | <?xml version="1.0" encoding="utf-8"?> |
然后在活动中重写onCreateOptionsMenu(Menu menu)方法:
1
2
3
4
5public boolean onCreateOptionsMenu(Menu menu) {
//R.menu.menu就是menu的布局文件
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
然后在手机上点击”菜单”就可以弹出菜单了,该菜单是从屏幕底部弹出的.
当然我们也可以为点击菜单上的项目注册响应事件,通过重写onOptionsItemSelected()方法:
1 | public boolean onOptionsItemSelected(MenuItem item) { |
有时候我们希望通过点击屏幕上自己定义的一个组件弹出一个菜单来,并且这个菜单就在这个组件的周围,那么可以这么来写(还是使用刚刚我们定义的menu布局文件):
1
2
3
4
5
6
7
8
9
10Button button = (Button)findViewById(R.id.refresh);
//点击这个按钮就能弹出一个菜单来
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
PopupMenu popupMenu = new PopupMenu(MainActivity.this,view);
popupMenu.getMenuInflater().inflate(R.menu.menu,popupMenu.getMenu());
popupMenu.show();
}
});
在刷新按钮的周围弹出了一个菜单

当然我们也可以为PopupMenu响应点击事件:
1
2
3
4
5
6
7
8
9
10
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem menuItem) {
switch(menuItem.getId()){
case R.id.refresh_item
//加入自己的逻辑(点击以后发生的事件)
}
return false;
}
});