android菜单的类型有几种,Android中的Menu(菜单)的三种类型菜单的学习

今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单)

下面分别来学一下

一:OptionMenu(选项菜单) 当我们使用手机的时候,按着手机上面的Menu,弹出的菜单就是选项菜单。但是我们一次性能显示菜单选项只能是6个

如果我们设置的超过6个时候,第六个菜单选项会自动设置成更多,然后我们点击更多的时候,剩下来的选项菜单就会选项.。先看下选项菜单的测试截图

0_13240482700OeY.gif

0_1324048275K1QE.gif

下面我们来创建一个选项菜单,步骤如下:

①:先去覆盖Activity中的onCreateOptionsMenu(),但是这个方法只会在第一次调用的时候会被实例化,当实例化时候,就不会在被调用了

②:调用add()来添加菜单选项.add(groupId, itemId, order, titleRes)方法中个参数的意思是,

*      @param group

*            : 选项组号,一般都设置成0就OK啦

* @param itenId

*            : 选项的Id 很重要

* @param order

*            :顺序,一般来说都设置0就行了

* @param titelRes

*            : 选项的标题名字

*/

③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id

下面来看下Demo源代码:

package com.jiangqq.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; /** * ①:直接去覆盖public boolean onCreateOptionsMenu(Menu menu) { code......}, * 这个方法,需要注意的是,这个方法如果覆盖的了,只会被创建一次,也就是说, 选项菜单只会去被实例化一次,,,之后就不会被去调用了 * ②:调用Menu中的add()方法,来添加每一个菜单选项, add(groupId, itemId, order, titleRes) group: * 选项组号,一般都设置成0就OK啦 itenId: 选项的Id 很重要 order:顺序,一般来说都设置0就行了 titelRes: 选项的标题名字 * ③:当我们去点击某项的选项的时候,覆盖重写onOptionsItemSelected(MenuItem item)这个方法去实现点击事件 * * @author jiangqq * */ public class Option_Menu_Activity extends Activity { // 点击菜单选项的常量Id private static final int menu1 = 1; private static final int menu2 = 2; private static final int menu3 = 3; private static final int menu4 = 4; private static final int menu5 = 5; private static final int menu6 = 6; private static final int menu7 = 7; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** * @param group * : 选项组号,一般都设置成0就OK啦 * @param itenId * : 选项的Id 很重要 * @param order * :顺序,一般来说都设置0就行了 * @param titelRes * : 选项的标题名字 */ public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, menu1, 0, "Menu1"); menu.add(0, menu2, 0, "Menu2"); menu.add(0, menu3, 0, "Menu3"); menu.add(0, menu4, 0, "Menu4"); menu.add(0, menu5, 0, "Menu5"); menu.add(0, menu6, 0, "Menu6"); menu.add(0, menu7, 0, "Menu7"); return true; } /** * * @param item * .getItemId() 获取被点击的Id */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case menu1: Toast.makeText(this, "你点击Menu1", Toast.LENGTH_LONG).show(); break; case menu2: Toast.makeText(this, "你点击Menu2", Toast.LENGTH_LONG).show(); break; case menu3: Toast.makeText(this, "你点击Menu3", Toast.LENGTH_LONG).show(); break; case menu4: Toast.makeText(this, "你点击Menu4", Toast.LENGTH_LONG).show(); break; case menu5: Toast.makeText(this, "你点击Menu5", Toast.LENGTH_LONG).show(); break; case menu6: Toast.makeText(this, "你点击Menu6", Toast.LENGTH_LONG).show(); break; case menu7: Toast.makeText(this, "你点击Menu7", Toast.LENGTH_LONG).show(); break; } return true; } }

二:SubMenu(子菜单)

平时我们希望把同一类型的菜单进行分级来显示,这时候我们会用SubMenu.下面的Demo,是创建两个菜单选项,当点击Menu3的时候 会弹出menu1和menu2的菜单

创建一个SubMenu的基本步骤如下

①: 先去覆盖Activity中的onCreateOptionsMenu()

②:调用addSubMenu()来添加子菜单项,然后调用add()来添加子菜单

③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id,去响应单击事件

下面是源代码:

package com.jiangqq.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.Toast; public class Sub_Menu_Activity extends Activity { private static final int menu3 = 3; private static final int menu4 = 4; private static final int menu1 = 1; private static final int menu2 = 2; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.sub); } @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu M3 = menu.addSubMenu("Menu3"); SubMenu M4 = menu.addSubMenu("Menu4"); M3.add(0, menu1, 0, "Menu1"); M3.add(0, menu2, 0, "Menu2"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case menu1: Toast.makeText(this, "你点击的是Menu1", Toast.LENGTH_LONG).show(); break; case menu2: Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show(); break; } return true; } }

截图显示:

0_1324048881Id7d.gif

0_1324048892X67G.gif   

三:ContexgMenu(上下文菜单)

首先什么是上下文菜单,当我们长时间按住屏幕的时候,会弹出菜单,那个就是ContextMenu();

看先文档中对创建ContextMenu()的方法:

To show a context menu on long click, most clients will want to call registerForContextMenu(View) and override onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

【注】 长按按钮,来显示上下文菜单我们必须要去调用  registerForContextMenu(View) ,onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

看下实现的源代码:

package com.jiangqq.menu; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class Context_Menu_Activity extends Activity { private static final int menu1 = 1; private static final int menu2 = 2; private static final int menu3 = 3; private TextView context_demo; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.context); context_demo = (TextView) this.findViewById(R.id.context_demo); registerForContextMenu(context_demo); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, menu1, 0, "Menu1"); menu.add(0, menu2, 0, "Menu2"); menu.add(0, menu3, 0, "Menu3"); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case menu1: Toast.makeText(this, "你 点击的是Menu1", Toast.LENGTH_LONG).show(); context_demo.setText("你点击的是Menu1"); break; case menu2: Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show(); context_demo.setText("你点击的是Menu2"); break; case menu3: Toast.makeText(this, "你点击的是Menu3", Toast.LENGTH_LONG).show(); context_demo.setText("你点击的是Menu3"); break; } return true; } }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值