上下文菜单(ContextMenu)
长按某个view不放,就会在屏幕中间弹出ContextMenu。
一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个View,这些View都可以根据自己的需求设置自己的ContextMenu。
1.1 menu-->context.xml
1.2 为选中的view绑定ContextMenu
package com.example.menuactivity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//context_btn:演示ContextMenu
//1、注册
//参数为传递一个view
registerForContextMenu(findViewById(R.id.context_btn));
//2、创建
//3、菜单项的操作
}
//创建上下文菜单ContextMenu。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.context,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
//绑定按钮操作事件
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.delete:
Toast.makeText(this,"删除",Toast.LENGTH_SHORT).show();
break;
case R.id.rename:
Toast.makeText(this,"重命名",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
弹出菜单(PopupMenu)
一个模态形式展现出的弹出风格的菜单,绑定在某个View上,一般出现在被绑定的View下方
//popup_btn:演示PopupMenu
Button popup_btn=findViewById(R.id.popup_btn);
popup_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1、实例化PopupMenu对象
PopupMenu menu=new PopupMenu(MainActivity.this,popup_btn);
//2、加载菜单资源:利用MenuInflater
menu.getMenuInflater().inflate(R.menu.popup,menu.getMenu());
//3、为PopupMenu设置点击监听器
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.copy:
Toast.makeText(MainActivity.this,"复制",Toast.LENGTH_SHORT).show();
break;
case R.id.paste:
Toast.makeText(MainActivity.this,"粘贴",Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
//4、显示popupmenu,不可以忘记
menu.show();
}
});