android 动态contextmenu,Android-三种菜单栏实现(OptionMenu,SubMenu,ContextMenu)

1.回顾

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

2.重点

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

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

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

3.OptionMenu实现

3.1 OptionMenu 菜单栏效果图

0818b9ca8b590ca3270a3433284dd417.png

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

android:id="@+id/option_item1"

android:orderInCategory="100"

android:title="去OptionActivity"/>

android:id="@+id/option_item2"

android:orderInCategory="100"

android:title="去Contextmenu"/>

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 菜单效果图

0818b9ca8b590ca3270a3433284dd417.png

4.2 静态实现 menu.xml

android:id="@+id/sub_one"

android:title="工程">

android:id="@+id/sub_one_item1"

android:orderInCategory="100"

android:title="Open project"/>

android:id="@+id/sub_one_item2"

android:orderInCategory="100"

android:title="Close project"/>

android:id="@+id/sub_one_item3"

android:orderInCategory="100"

android:title="HI project"/>

android:id="@+id/sub_two"

android:title="窗体">

android:id="@+id/sub_two_item1"

android:orderInCategory="100"

android:title="show view"/>

android:id="@+id/sub_two_item2"

android:orderInCategory="100"

android:title="preference"/>

android:id="@+id/sub_two_item3"

android:orderInCategory="100"

android:title="New Window"/>

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 菜单效果图

0818b9ca8b590ca3270a3433284dd417.png

5.2 静态实现 布局

android:id="@+id/context_item1"

android:orderInCategory="100"

android:showAsAction="never"

android:title="我是xml"/>

android:id="@+id/context_item2"

android:orderInCategory="100"

android:showAsAction="never"

android:title="我是xml2"/>

android:id="@+id/context_item3"

android:orderInCategory="100"

android:showAsAction="never"

android:title="我是xml3"/>

android:id="@+id/context_item4"

android:orderInCategory="100"

android:showAsAction="never"

android:title="我是xml4"/>

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 免积分下载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值