您的位置:首页 > 移动开发 > Android开发

Android-三种菜单栏实现(OptionMenu,SubMenu,ContextMenu)

2015-08-26 17:13 507 查看

1.回顾

   上篇学习了 安卓的 notification 通知实现

2.重点

   (1)OptionMenu 的 动态和 静态实现

   (2)Submenu 的动态和静态实现

   (3)ContextMenu 的 动态和静态实现

3.OptionMenu实现

   3.1 OptionMenu 菜单栏效果图

                                                             


     3.2 静态实现(menu 文件下新建 menu.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/option_item1"
android:orderInCategory="100"
android:title="去OptionActivity"/>
<item
android:id="@+id/option_item2"
android:orderInCategory="100"
android:title="去Contextmenu"/>

</menu>

    3.3 业务实现

/**
* 重写 onCreateOptionsMenu
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {

//动态实现
MenuItem item= menu.add(1, 1, 1,"河南");
item.setTitle("原");
menu.add(1, 2, 1,"理工");
menu.add(1, 3, 1,"大学");
menu.add(2, 3, 1,"焦作");

//加载 布局实现
getMenuInflater().inflate(R.menu.option_menu, menu);
return super.onCreateOptionsMenu(menu);
}

   3.4 选择事件 

/**
* 菜单 点击 重写onMenuItemSelected
*/
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

Toast.makeText(getApplicationContext(),featureId+" | "+item.getTitle(),Toast.LENGTH_LONG).show();
// item 点击
switch (item.getItemId()) {
case R.id.option_item1:
Intent intent= new Intent(MainActivity.this,OptionActivity.class);
intent.putExtra("data",item.getTitle());
item.setIntent(intent);
break;
case R.id.option_item2:
Intent intent1= new Intent(MainActivity.this,ContextmenuActivity.class);
item.setIntent(intent1);
break;
}
return super.onMenuItemSelected(featureId, item);
}

4.Submenu 实现

    4.1 SubMenu 菜单效果图

                                                              


   4.2 静态实现 menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/sub_one"
android:title="工程">
<menu>
<item
android:id="@+id/sub_one_item1"
android:orderInCategory="100"
android:title="Open project"/>
<item
android:id="@+id/sub_one_item2"
android:orderInCategory="100"
android:title="Close project"/>
<item
android:id="@+id/sub_one_item3"
android:orderInCategory="100"
android:title="HI project"/>
</menu>
</item>
<item
android:id="@+id/sub_two"
android:title="窗体">
<menu>
<item
android:id="@+id/sub_two_item1"
android:orderInCategory="100"
android:title="show view"/>
<item
android:id="@+id/sub_two_item2"
android:orderInCategory="100"
android:title="preference"/>
<item
android:id="@+id/sub_two_item3"
android:orderInCategory="100"
android:title="New Window"/>
</menu>
</item>

</menu>

   4.3 业务实现

/**
* 创建菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {

//动态创建(代码创建)
//添加第一项
// SubMenu subMenu= menu.addSubMenu("工程");
// subMenu.add(1, 1, 1,"打开工程");
// subMenu.add(1, 2, 1,"关闭工程");
// subMenu.add(1, 3, 1,"Build工程");
// subMenu.add(1, 4, 1,"Clean工程");
// //添加第二项
// SubMenu subMenu1= menu.addSubMenu("窗口");
// subMenu1.add(2, 1, 1,"new Window");
// subMenu1.add(2, 2, 1,"Editer");
// subMenu1.add(2, 3, 1,"Show View");
// subMenu1.add(2, 4, 1,"Preference");

//布局实现
getMenuInflater().inflate(R.menu.sub_menu, menu);

return super.onCreateOptionsMenu(menu);
}
/**
* item 点击事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {

//可以同过 id 判断

Toast.makeText(getApplicationContext(),item.getTitle(),Toast.LENGTH_LONG).show();

return super.onOptionsItemSelected(item);
}

5.ContextMenu 上下文菜单实现

    5.1 ContextMenu 菜单效果图

                                                             



     5.2 静态实现 布局

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/context_item1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="我是xml"/>
<item
android:id="@+id/context_item2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="我是xml2"/>
<item
android:id="@+id/context_item3"
android:orderInCategory="100"
android:showAsAction="never"
android:title="我是xml3"/>
<item
android:id="@+id/context_item4"
android:orderInCategory="100"
android:showAsAction="never"
android:title="我是xml4"/>

</menu>

   5.3 业务实现

/**
* 重新 onCreateContextMenu 添加菜单
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// 重写 ContextMenu 方法
// 动态加载
menu.add(1, 1, 1, "干嘛");
menu.add(1, 2, 1, "哇哦");
menu.add(1, 3, 1, "咳咳");
menu.add(1, 4, 1, "哈哈");

//布局添加
getMenuInflater().inflate(R.menu.context_menu, menu);

super.onCreateContextMenu(menu, v, menuInfo);
}

/**
* 菜单 项点击事件
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
textView1.setText(item.getItemId()+" | "+item.getTitle());
//判断 点击的id , 不同的操作使用 switch
switch (item.getItemId()) {
case 1:
Toast.makeText(getApplicationContext(),"我就是要"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(getApplicationContext(),"你快看"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(getApplicationContext(),"老头子!"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(getApplicationContext(),"你是。。。!"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case R.id.context_item1:
Toast.makeText(getApplicationContext(),"context_item1",Toast.LENGTH_SHORT).show();
break;
case R.id.context_item2:
Toast.makeText(getApplicationContext(),"context_item2",Toast.LENGTH_SHORT).show();
break;
case R.id.context_item3:
Toast.makeText(getApplicationContext(),"context_item3",Toast.LENGTH_SHORT).show();
break;
case R.id.context_item4:
Toast.makeText(getApplicationContext(),"context_item4",Toast.LENGTH_SHORT).show();
break;

}
return super.onContextItemSelected(item);
}

6.demo 免积分下载

http://download.csdn.net/detail/lablenet/9050689
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息