Android学习(八)—— Android菜单

Android 菜单 我们继续来进行学习,今天写一下在软件中用的还算较多的菜单。 1、Menu 菜单,很显然,作用就是点击不同的选项触发不同的方法。现在在安卓使用中推荐使用ActionBar,但这里我们还是对菜单进行一个简单的解释。 菜单主要分为三类,选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu),下面我们就一个一个来看一下。 (1)选项菜单 当用户单击软件上的菜单按钮,触发事件弹出的菜单框就是选项菜单。 这是效果图 先是布局代码 布局为在res文件夹下新建一个menu文件夹,在此文件夹下建xml文件。 复制代码 1 2 4 9 14 19 复制代码 解释一下其中一些属性 showAsAction 主要是针对这个菜单的显示起作用的,它有三个可选项 always:总是显示在界面上 never:不显示在界面上,只让出现在右边的三个点中 ifRoom:如果有位置才显示,不然就出现在右边的三个点中 下面是java代码 复制代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //导入菜单布局 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } //这里是点击菜单项的触发事件 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.mune_enter: Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show(); break; case R.id.mune_setting: Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show(); break; case R.id.mune_out: Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } } 复制代码 (2)上下文菜单 当用户长按Activity页面时,弹出的菜单被称为上下文菜单。一般情况下ContextMenu常用于ListView或者GridView。 效果图 先是布局文件 这里的布局就是下载layout中,父布局为FrameLayout 复制代码 1 2 6 7 11 12 13 复制代码 这里没什么要说的,直接看下面。 java代码 复制代码 public class MainActivity extends AppCompatActivity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //加载数据 showListView(); // 注册上下文菜单 this.registerForContextMenu(listview); } //加载数据 private void showListView() { listview = (ListView) findViewById(R.id.mune_list); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, getDate()); listview.setAdapter(adapter); } //创建数据源 private ArrayList getDate() { ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) { list.add("菜单" + i); } return list; } //添加上下文菜单的菜单项 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.setHeaderTitle("上下文菜单"); //加载上下文菜单内容 menu.add(1, 1, 1, "选项一"); menu.add(1, 2, 1, "选项二"); menu.add(1, 3, 1, "选项三"); super.onCreateContextMenu(menu, v, menuInfo); } //创建单击事件 public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show(); break; case 3: Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onContextItemSelected(item); } } 复制代码 (3)子菜单 它就是将功能相同的操作进行分组显示,作用在选项菜单上,是选项菜单的二级菜单 效果图 先上布局文件 其实布局文件中可以什么都没有 复制代码 1 2 6 7 12 13 复制代码 然后是java代码 复制代码 1 public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 } 8 @Override 9 public boolean onCreateOptionsMenu(Menu menu) { 10 SubMenu fileMenu = menu.addSubMenu("查看"); 11 SubMenu editMenu = menu.addSubMenu("输入"); 12 //添加菜单项 13 fileMenu.add(1, 1, 1, "查看1"); 14 fileMenu.add(1, 2, 1, "查看2"); 15 fileMenu.add(1, 3, 1, "查看3"); 16 editMenu.add(2, 1, 1, "输入1"); 17 editMenu.add(2, 2, 1, "输入2"); 18 editMenu.add(2, 3, 1, "输入3"); 19 return super.onCreateOptionsMenu(menu); 20 } 21 //创建点击事件 22 public boolean onOptionsItemSelected(MenuItem item) { 23 if (item.getGroupId() == 1) { 24 switch (item.getItemId()) { 25 case 1: 26 Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show(); 27 break; 28 case 2: 29 Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show(); 30 break; 31 case 3: 32 Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show(); 33 break; 34 default: 35 break; 36 } 37 } else if (item.getGroupId() == 2) { 38 switch (item.getItemId()) { 39 case 1: 40 Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show(); 41 break; 42 case 2: 43 Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show(); 44 break; 45 case 3: 46 Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show(); 47 break; 48 default: 49 break; 50 } 51 } 52 return super.onOptionsItemSelected(item); 53 } 54 } 复制代码 上面就是菜单的用法了。。。。。。。 说一下ContextMenu与OptionMenu的区别: 1、OptionMenu对应的是activity,一个activity只能拥有一个选项菜单; 2、ContextMenu对应的是view,每个view都可以设置上下文菜单; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~https://www.cnblogs.com/QY-admin/p/9974575.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信