package com.example.lenovo.testone; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; /** * Created by lenovo on 2018/7/1. */ public class MenuActivity extends Activity{ Context context; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu_activity); context=this; Button bt_menu=findViewById(R.id.bt_menu); Button bt_menu2=findViewById(R.id.bt_menu2); registerForContextMenu(bt_menu); registerForContextMenu(bt_menu2); } //这个就是菜单的ID Menu.FIRST 可以不需要 自己设置0123456都行 final static int MENU_00 = Menu.FIRST; final static int MENU_01 = Menu.FIRST+1; final static int MENU_02 = Menu.FIRST+2; final static int MENU_03 = Menu.FIRST+3; final static int MENU_04 = Menu.FIRST+4; final static int MENU_05 = Menu.FIRST+5; //这个方法就是activity启动的时候 菜单调用的方法 //onCreateOptionsMenu 菜单在这个方法里创建 @Override public boolean onCreateOptionsMenu(Menu menu22222) { // getMenuInflater().inflate(R.menu.menu_2,menu22222);//我理解的容器= = 怎么跟你说。。。 都是把东西加这个里面了 menu22222 一个从xml里面取 一个代码里面add //emm感觉这个和前面的 Basead getview里面的有点不同哇后吗 嗯 有点不一样 这个是把menu_2 里面的数据放到menu22222里面 //大佬 和popmenu的一样吗 这个inflate 一样的 //这个第一个参数是ID 第二个应该是顺序 第三个就是名字了 //代码添加二级菜单 SubMenu menuItem=menu22222.addSubMenu(0,MENU_00,0,"打印"); menuItem.add(0,MENU_05,0,"打印二级菜单"); menu22222.add(0,MENU_01,1,"新建"); menu22222.add(0,MENU_02,2,"邮件"); menu22222.add(0,MENU_03,3,"设置"); menu22222.add(0,MENU_04,4,"订阅"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ //这个就是menu的点击事件 通过上面生成的ID来判断 // case MENU_00: // Toast.makeText(context,"打印",Toast.LENGTH_SHORT).show(); // break; } return super.onOptionsItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); if(v.getId()==R.id.bt_menu){ getMenuInflater().inflate(R.menu.menu_2,menu); } if(v.getId()==R.id.bt_menu2){ getMenuInflater().inflate(R.menu.mymenu,menu); } } @Override public boolean onContextItemSelected(MenuItem item) { return super.onContextItemSelected(item); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/bt_menu" android:layout_width="100dp" android:layout_height="60dp" android:text="菜单1"/> <Button android:id="@+id/bt_menu2" android:layout_width="100dp" android:layout_height="60dp" android:text="菜单2" android:layout_marginTop="40dp"/> </LinearLayout>