首先了解什么是菜单?
由于Android手机屏幕的有限,当如果有许多按钮或者导航选项时,分布在界面上十分的不美观,就如图桌面上散乱的放置了很多杂物,因此可以提供一个类似抽屉的东西,负责存放和整理这些按钮。
如图所示便是微信的Menu,点开这个按钮后,会出现一排更具体的按钮。
那么如何实现一个Menu呢?
首先需要创建一个menu的文件夹,在res文件目录下创建名为“menu”的文件夹,然后右键选择文件夹new-》Menu resource file ,然后添加如下代码。每一个item都是一个选项,id唯一标识该选项,title用于显示选项的文字内容。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu1"
android:title="选项1"/>
<item
android:id="@+id/menu2"
android:title="选项2"/>
<item
android:id="@+id/menu3"
android:title="选项3"/>
<item
android:id="@+id/menu4"
android:title="选项4"/>
<item
android:id="@+id/menu5"
android:title="选项5"/>
</menu>
布局文件创建完后,接下来就在需要使用的Activity中书写显示的代码。
首先需要重写onCreateOptionsMenu这个方法,这个方法用于显示Menu。如下代码所示。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu,menu);
return super.onCreateOptionsMenu(menu);
}
完成后运行虚拟机,首先可以看到标题栏上出现了竖直排列的三个白点,这个就是Menu。
然后点击menu,可以看到前面所编写的item就出现在屏幕上。
点击时,可以发现没有反应,这是因为目前只实现了显示的部分,响应还需要再重写onOptionsItemSelected方法,如下面代码所示。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.menu1:
Toast.makeText(this,"点击了第"+1+"个",Toast.LENGTH_SHORT).show();
break;
case R.id.menu2:
Toast.makeText(this,"点击了第"+2+"个",Toast.LENGTH_SHORT).show();
break;
case R.id.menu3:
Toast.makeText(this,"点击了第"+3+"个",Toast.LENGTH_SHORT).show();
break;
case R.id.menu4:
Toast.makeText(this,"点击了第"+4+"个",Toast.LENGTH_SHORT).show();
break;
case R.id.menu5:
Toast.makeText(this,"点击了第"+5+"个",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
最终运行效果如图所示。
此外还能如微信Menu一样,在文字内容前添加图标已达到美观的效果。只需要在布局文件中,给对应的item添加android:icon这个属性,指向所需要的图标即可。
对应更多的自定义化内容,由于只是本文只是简单使用,所以不做更多的描述,可以自行探索