栗子:创建一个ContextMenu
public class MenuActivity extends AppCompatActivity {
private View tv;
private View img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
tv = findViewById(R.id.tv);
img = findViewById(R.id.img);
//注册上下文菜单
registerForContextMenu(tv);
registerForContextMenu(img);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.main,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_copy:
Toast.makeText(this,"点击了Copy",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
res下menu文件夹下的main菜单文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_copy"
android:orderInCategory="100"
app:showAsAction="never"
android:title="Copy"/>
</menu>
效果
栗子:根据不同控件弹出不同菜单
public class MenuActivity extends AppCompatActivity {
private View tv;
private View img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
tv = findViewById(R.id.tv);
img = findViewById(R.id.img);
//注册上下文菜单
registerForContextMenu(tv);
registerForContextMenu(img);
}
public static final int MENU_ITEM_COPY_TEXT = 1;
public static final int MENU_ITEM_SAVE_TO_FILE = 2;
public static final int MENU_ITEM_EDIT_IMAGE = 3;
public static final int MENU_ITEM_RESEND_IMAGE_ = 4;
@Override
public void onCreateContextMenu(ContextMenu menu,
View v,//长按哪个控件弹出的菜单
ContextMenu.ContextMenuInfo menuInfo) {
switch(v.getId()){
case R.id.tv:
menu.add(Menu.NONE,1,Menu.NONE,"复制文字");
menu.add(Menu.NONE,2,Menu.NONE,"保存到文件");
break;
case R.id.img:
menu.add(Menu.NONE,3,Menu.NONE,"编辑图片");
menu.add(Menu.NONE,4,Menu.NONE,"转发图片");
break;
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case MENU_ITEM_COPY_TEXT:
Toast.makeText(this,"点击了 复制文字",Toast.LENGTH_SHORT).show();
break;
case MENU_ITEM_SAVE_TO_FILE:
Toast.makeText(this,"点击了 保存到文件",Toast.LENGTH_SHORT).show();
break;
case MENU_ITEM_EDIT_IMAGE:
Toast.makeText(this,"点击了 编辑图片",Toast.LENGTH_SHORT).show();
break;
case MENU_ITEM_RESEND_IMAGE_:
Toast.makeText(this,"点击了 转发图片",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}