android中menu重写哪些方法,在Android中Menu的使用

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

Menu的分类选项菜单(Options Menu);当用户触发 menu 项时弹出的菜单

上下文菜单(Context Menu):用户长按那个控件时弹出的类似对话框

弹出菜单,当用户点击某个 View 视图是弹出的菜单

前提准备java创建了menu对象

使用XML方法定义Menu要在XML文件中正确填写并添加ID

使用XML定义MenuXML文件的基本属性<?xml version="1.0" encoding="utf-8"?>

android:id="@+id/daxiao"

android:title="设置字体大小"

android:orderInCategory="3">

android:id="@+id/yanse"

android:title="设置字体颜色"

android:orderInCategory="2"

>

android:id="@+id/shuxing"

android:title="设置字体属性"

android:orderInCategory="1">

Menu 菜单的嵌套使用规则Item 中可以嵌套 menu,但是不能嵌套 group

Menu 中既可以嵌套 group,又可以嵌套 item。

Group 中只能嵌套 item,不能嵌套 menu

选项菜单的添加

添加XML文件中的Menu选项菜单需要重写在在java代码中重写onCreateOptionsMenu(Menu menu)方法public boolean onCreateOptionsMenu(Menu menu) {

/*第一步需要加载菜单选项*/

/*菜单填充器将菜单获取然后添加至active中*/

/*第一种比较麻烦的方法*/

/*MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.options_menu,menu);*/

/*第二种方法*/

getMenuInflater().inflate(R.menu.options_menu,menu);

return true;

}

在Java代码中动态定义Menu可以在java代码中的onCreateOptionsMenu(Menu menu)方法中使用menu.add()方法动态定义增加Menu/*另外可以通过代码添加menu项*/

//menu.add(group id,itmeid 自己设置);里面填menu的分组 group可以是itme的父标签

menu.add(Menu.NONE,ITMEID,Menu.NONE,"lalala我是后设置的");

上下文菜单定义后添加的方法与选项菜单类似

当用户长按 Activity 页面时,弹出的菜单我们称为上下文菜单。我们经常在 Windows 中用鼠

标右键单击弹出的菜单就是上下文菜单。覆盖 Activity 的 onCreateContextMenu()方法,调用 Menu 的 add 方法添加菜单项

MenuItem

覆盖 onContextItemSelected()方法,响应菜单单击事件

调用 registerForContextMenu()方法,为视图注册上下文菜单

子菜单定义后添加的方法与选项菜单类似

子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows 的“文件”菜单中就

有“新建”,“打开”,“关闭”等子菜单。创建子菜单的方法覆盖 Activity 的 onCreateOptionsMenu()方法,调用 Menu 的 addSubMenu()方法 添加子菜单项

调用 SubMenu 的 add()饭饭,添加子菜单项

覆盖 onCreateItemSelected()方法,响应菜单单击事件

添加单击事件

选项菜单以下为对于使用XML文件加载的选项菜单为例

选项菜单需要重写onOptionsItemSelected(MenuItem item)方法使其触发/**

* !!只针对选项菜单!!

* 当选项菜单被选中时调用的方法

* @param item 表示菜单项对象

* @return false表示不进行处理

*/

@Override

public boolean onOptionsItemSelected(MenuItem item) {

//对于使用XML文件加载的菜单

int itemid = item.getItemId();//获取触发的item的id

float a;

switch (itemid) {

case R.id.daxiao:

a = ceshi.getTextSize();

Toast.makeText(MainActivity.this,""+a,Toast.LENGTH_SHORT).show();

if (a==100) ceshi.setTextSize(TypedValue.COMPLEX_UNIT_PX,50);

else ceshi.setTextSize(TypedValue.COMPLEX_UNIT_PX,100);

break;

case R.id.yanse:

//随机生成颜色

int red = (int) (Math.random()*256);

int green = (int) (Math.random()*256);

int blue = (int) (Math.random()*256);

ceshi.setTextColor(Color.rgb(red,green,blue));

break;

}

return super.onOptionsItemSelected(item);

}

上下文菜单

上下文菜单:上下文菜单是和某一种控件绑定使用的,也就是说每个控件只有注册了上下文菜单,并且长 按时弹出的菜单就是上下文菜单,

上下文菜单加载菜单是通过重写 onCreateContextMenu()来完成的,

上下文菜单的 点击事件是通过抽重写 onContextItemSelected()方法来实现的

PopMenu

是通过创建 popMenu 的对象,再通过菜单加载器将其加载进来的, popMenu 的点击事件是通过 popMenu.setOnMenuItemClickListener()方法实现的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值