Android菜单创建和使用

Menu分类:

1.选项菜单(OptionMenu)

选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作。

创建菜单:右键res--->New--->Android Resource Directory--->Resource type选择Menu--->右键Menu--->New--->Menu Resource File

所有的菜单项都叫做item,而所有包裹菜单项的都叫做Menu。

onCreateOptionsMenu(Menu menu):创建OptionMenu

上述方法中使用getMenuInflater().inflater(R.menu.option,menu):将菜单资源加载进来

getMenuInflater():返回一个MenuInflater对象。

 

android:icon "用于设置图标"

app:showAsAction:控制菜单项以多种形式显示(always:直接在标题栏显示,never:不直接在标题栏显示,withText:控制图标和文本一起显示,ifRoom:有空间就显示)

app:showAsAction="always":将菜单显示在菜单栏中

app:showAsAction="always|withText":将菜单和图标同时显示在菜单栏中

onOptionsItemSelected(MenuItem item):OptionMenu的选中方法

item.getItemId():获取菜单项对应id

注意:最多只能含有一级子菜单,即item中只能包含一层menu。

2.上下文菜单(ContextMenu):长按某个view不放,就会在屏幕中间弹出ContextMenu。

点击无效,需要长按才能出现效果。

注册时:将其与按钮绑定在一起用registerForContextMenu(findViewById(R.id.ID值));

创建时使用onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo)方法

菜单项的选择:利用onContextItemSelected()方法。

为按钮设置上下文操作模式(将原本出现在中间的界面操作出现在操作栏上):

①实现ActionMode CallBack

②在view的长按事件中去启动上下文操作模式

3.弹出菜单(PopupMenu)

一个模态形式展示的弹出风格的菜单,绑在某个View上,一般出现在被绑定的View的下方。

①实例化PopupMenu对象(参数二:被绑定的view)

例如:PopupMenu menu=new PopupMenu(OptionActivity.this,btn);

②加载菜单资源:利用MenuInflate将Menu资源加载到PopupMenu.getMenu()所返回的Menu对象中,将R.Menu.xx对应的菜单资源加载到弹出式菜单中(将参数一加载到参数二中)

例如:menu.getMenuInflater().inflate(R.menu.popup,menu.getMenu());

③为PopupMenu设置点击监听器(用setOnMenuItemClickListener()方法)

④显示PopupMenu(千万不能忘记)

利用show()方法。

Menu创建的方式:

1.通过xml定义     

2.通过java定义

没有子菜单的利用add(int i,int i1,int i2,CharSequence charSequence)方法,参数一:组id,参数二:菜单项id,参数三:序号,菜单四:菜单项上的文本

含有子菜单的利用addSubMenu(int i,int i1,int i2,CharSequence charSequence)方法,参数一:组id,参数二:菜单项id,参数三:序号,菜单四:菜单项上的文本。返回一个SubMenu类型的数据。

子菜单同样利用add(int i,int i1,int i2,CharSequence charSequence)方法,参数一:组id,参数二:菜单项id,参数三:序号,菜单四:菜单项上的文本

xml定义Menu的优势:

1.清晰的菜单结构

2.将菜单内容与应用的逻辑代码分离

3.资源适配更容易

Menu显示:

1.onCreateOptionsMenu()方法必须返回true,否则无法显示

2.onOptionsItemSelected()方法返回true,代表操作结束,该方法调用父类的默认实现(super.onOptionsItemSelected(item))

3.调用父类的默认实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值