Android入门之Menu组件的使用教程详解
目录
简介
Android有不同的菜单:
菜单的使用和我们前面说的AlertDialog很像。它可以支持自定义样式、也可以对菜单的点击事件进行绑定。
Android里有几个MainActivity事件可以覆盖,其中有以下几个事件就是用于处理Menu的。
课程目标
代码
前端代码
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> android:id="@+id/viewContext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="长按出context menu" android:textSize="18sp" /> android:id="@+id/textColor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="选择菜单改变颜色" android:textSize="18sp" />
系统菜单
前端代码
不需要
后端代码
MainActivity.java
系统菜单涉及到两个方法的覆盖,因此只要在这两个方法把系统菜单设上,同时对系统菜单的“选择”事件做出自定义即可,在此我们通过系统菜单改变屏幕中一行字的字体颜色
//1.定义不同颜色的菜单项的标识:
private final int RED = 101;
private final int GREEN = 102;
private final int BLUE = 103;
private final int YELLOW = 104;
private final int GRAY = 105;
private final int CYAN = 106;
private final int BLACK = 107;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(1, RED, 4, "红色");
menu.add(1, GREEN, 2, "绿色");
menu.add(1, BLUE, 3, "蓝色");
menu.add(1, YELLOW, 1, "黄色");
menu.add(1, GRAY, 5, "灰色");
menu.add(1, CYAN, 6, "蓝绿色");
menu.add(1, BLACK, 7, "黑色");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case RED:
textColor.setTextColor(Color.RED);
break;
case GREEN:
textColor.setTextColor(Color.GREEN);
break;
case BLUE:
textColor.setTextColor(Color.BLUE);
break;
case YELLOW:
textColor.setTextColor(Color.YELLOW);
break;
case GRAY:
textColor.setTextColor(Color.GRAY);
break;
case CYAN:
textColor.setTextColor(Color.CYAN);
break;
case BLACK:
textColor.setTextColor(Color.BLACK);
break;
}
return super.onOptionsItemSelected(item);
}
弹出菜单
前端代码
<?xml version="1.0" encoding="utf-8"?>
后端代码
btnShowMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(MainActivity.this,btnShowMenu);
popup.getMenuInflater().inflate(R.menu.pop_menu, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.mcat:
Toast.makeText(MainActivity.this,"你轻拍了一下喵",
Toast.LENGTH_SHORT).show();
break;
case R.id.mdog:
Toast.makeText(MainActivity.this,"你轻拍了一下汪",
Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
popup.show();
}
});
}
ContextMenu
前端
context_menu.xml
<?xml version="1.0" encoding="utf-8"?>
后端
我们可以看到这个ContextMenu是绑定在一个TextView上的。
viewContext=(TextView)findViewById(R.id.viewContext);
registerForContextMenu(viewContext);
//重写上下文菜单的创建方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater inflator = new MenuInflater(this);
inflator.inflate(R.menu.context_menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
//上下文菜单被点击是触发该方法
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.blue:
viewContext.setTextColor(Color.BLUE);
break;
case R.id.green:
viewContext.setTextColor(Color.GREEN);
break;
case R.id.red:
viewContext.setTextColor(Color.RED);
break;
}
return true;
}
}
到此这篇关于Android入门之Menu组件的使用教程详解的文章就介绍到这了,更多相关Android Menu组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播