Menu,在Android3.0以前的menu显示,是用户点击手机下方操作按钮的菜单按钮时,会从界面底部向上弹出菜单,菜单内容出现在屏幕底部,可以包含六个及以上的菜单项,超出的部分则以“更多”来显示。
在Android3.0以后的更高版本的系统中,菜单中的项目会出现在操作栏当众,用户通过使用顶部操作栏右侧的图标/提示字,或者按设备的菜单键显示出操作溢出菜单。(3.0以后的菜单栏如下图所示)
Menu分类:选项菜单(OptionMenu)、上下文菜单(ContextMenu)、弹出菜单(PopupMenu)
选项菜单(OptionMenu)
选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作。
1.1新建menu文件夹:res-->New-->Android resource Directory,修改文件夹类型menu
1.2新建menu文件option.xml,menu-->New-->Menu Resource File
1.3 optionn.xml文件代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- item中的属性:showAsAction:always固定在操作栏上直接显示; -->
<!-- icon可以直接显示指定图标,不显示文本,如果不使用showAsAction="always",则只会显示文本 -->
<!-- 在图标文本同时存在的情况下,如果想要又显示文本又显示icon,使用showAsAction="always|withText" -->
<item android:title="保存"
android:id="@+id/save"
android:icon="@drawable/ic_save"
app:showAsAction="always"/>
<item android:title="设置"
android:id="@+id/setting"/>
<item android:title="更多操作" >
<menu >
<item android:title="退出"
android:id="@+id/exit"/>
<item android:title="操作1" />
<item android:title="操作2" />
</menu>
</item>
</menu>
1.4 创建OptionMenu,实现点击按钮触发事件
package com.example.menuactivity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//创建OptionMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//通过该方法getMenuInflater(),可以将我们之前设置的option.xml文件设置为我们的菜单文件
//参数1:传menu资源索引;参数2:我们的菜单对象
//加载菜单资源
getMenuInflater().inflate(R.menu.option,menu);
return true;
}
//OptionMenu菜单项选中的触发方法
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
//获取菜单项对应的Id
switch (item.getItemId()) {
case R.id.save:
Toast.makeText(this,"保存",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}