本文主要来介绍如何实现菜单的功能,包括一级菜单、二级菜单的实现步骤即点击事件的处理:
实现效果:
1、在res下面创建一个menu文件,用于存放资源文件

写一级菜单:
如果要实现二级菜单的话就在标签中嵌套一个menu标签即可:
2、在.java中复写onCreateOptionsMenu方法
该方法的作用是用来加载菜单条目的!所以不能忘记!!!
获取到刚刚的.xml文件
此时运行的话就可以看到菜单了!效果如下:

但是一般点击菜单都会跳转到其他界面上去,需要对菜单条目设置点击事件,此处模拟打印出一个Toast作为效果:
实现点击事件
一般来说都会有好几个菜单条目,需要对具体点击的那个条目设置点击事件,所以这里一般使用 if—else if 或者 switch—case 方法来对点击行为进行一个判断,此处以switch-case为例:
当然也可以将Toast抽成一个类来使用,看上去就更加简洁了:
实现效果:
源码:
menu/menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="A"
android:id="@+id/a_part">
<menu>
<item android:title="A.A"
android:id="@+id/a_a_part"/>
<item android:title="A.B"
android:id="@+id/a_b_part"/>
</menu>
</item>
<item android:title="B"
android:id="@+id/b_part">
<menu>
<item android:title="B.A"
android:id="@+id/b_a_a_part"/>
<item android:title="B.B"
android:id="@+id/b_b_part"/>
</menu>
</item>
<item android:title="C"
android:id="@+id/c_part"/>
</menu>MenuActivity .java
public class MenuActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
}
/**
* 加载菜单条目
*
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
/**
* 实现菜单的点击事件
*
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.a_part:
Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.a_a_part:
Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.a_b_part:
Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.b_part:
Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.b_a_a_part:
Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.b_b_part:
new ToastUtil().showMsg(this,"the item is "+item.getTitle());
break;
case R.id.c_part:
new ToastUtil().showMsg(this,"the item is "+item.getTitle());
break;
}
return super.onOptionsItemSelected(item);
}
public class ToastUtil {
public Toast mToast;
public void showMsg(Context context, String msg){
if(mToast==null){
mToast=Toast.makeText(context,msg,Toast.LENGTH_SHORT);
}else{
mToast.setText(msg);
}
mToast.show();
}
}
}
版权声明:本文为qq_40716430原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。