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" />

  

  android:id="@+id/btnShowMenu"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_below="@+id/textColor"

  android:layout_centerHorizontal="true"

  android:layout_marginTop="10dp"

  android:text="展示弹出菜单" />

  

  系统菜单

  前端代码

  不需要

  后端代码

  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组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: