Android菜单

       android提供了三种菜单类型,分别为options menucontext menusub menuoptions menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单不能嵌套子菜单。

1、利用xml定义选项菜单

a) options menu通过activityonCreateOptionsMenu来生成

b) 这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。

c) onOptionsItemSelected 用来处理选中的菜单项。

2、响应菜单项单击事件(3种方式)

1onMenuItemSelected(int featureld, MenuItem item)

2、public boolean onOptionsItemSelected(MenuItem item)

3、onMenuItemClick

3动态添加、修改和删除菜单项

菜单项的增删改查

增:add, addSubMenu

删:removeItemremoveGroup

改:

选项菜单:onPrepareOptionsMenu()——MenuItem->setXXX()

上下文菜单:onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {} 方法在每次调用上下文菜单时都会被调用一次

4子菜单的创建

l Xml创建

l 动态创建

Menu submenu = Menu.addSubMenu(x, x, x, x)

submenu.add()

submenu.add()

main_menu.addSubMenu(x,x,x,x);

或:

getMenuInflater ().inflater(R.menu.submenu, submenu);

5带单选或复选的子菜单

public boolean onCreateOptionsMenu(Menu menu) {

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

SubMenu sb = menu.findItem(R.id.item3).getSubMenu();

sb.setIcon(R.drawable.ic_launcher);

// sb.setGroupCheckable(0, true, true);

sb.getItem(0).setCheckable(true);

sb.getItem(0).setChecked(true);

this.menu = menu;

return super.onCreateOptionsMenu(menu);

}

6上下文子菜单

public class ContextMenuActivity extends Activity {

ContextMenu menu = null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView tv = (TextView) this.findViewById(R.id.textView);

this.registerForContextMenu(tv);

}

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){

menu.setHeaderTitle("上下文菜单");

menu.setHeaderIcon(R.drawable.ic_launcher);

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

this.menu = menu;

}

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.subitem1:

Toast.makeText(this, "subitem1", 

Toast.LENGTH_SHORT).show();

break;

case R.id.subitem2:

Toast.makeText(this, "subitem2", 

Toast.LENGTH_SHORT).show();

break;

case R.id.subitem3:

Toast.makeText(this, "subitem3", 

Toast.LENGTH_SHORT).show();

break;

}

return true;

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值