# 安卓学习笔记
选项菜单:软件右上角菜单
上下文菜单:长按显示菜单
弹出式菜单:点击显示菜单
新建菜单选项
在res文件夹中新建menu文件夹,右击创建菜单文件
该文件可以创建item和grup组件
item可以创建title,icon和显示设置showAsAction常用的always永久显示和ifRoom显示,两以上建议设置为ifRoom
<?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 android:id="@+id/menu_setting"
android:title="设置"
android:icon="@drawable/baseline_settings_24"
app:showAsAction="always"/>
<item android:id="@+id/menu_hepp"
android:title="关于"
android:icon="@drawable/baseline_help_24"
app:showAsAction="ifRoom"/>
<item android:id="@+id/menu_hepp1"
android:title="帮助"
android:icon="@drawable/baseline_help_24"
app:showAsAction="ifRoom"/>
<item android:id="@+id/menu_hepp2"
android:title="退出"
android:icon="@drawable/baseline_help_24"
app:showAsAction="ifRoom"/>
</menu>
选项菜单
需要实现两个方法
onCreateOptionsMenu(Menu menu) 用于绑定菜单文件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.菜单文件);
return true;
}
onOptionsItemSelected(@NonNull MenuItem item),将指定的菜单项填充到 Menu对象中
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
switch (itemId){
case R.id.menu_hepp:
Toast.makeText(this, "点击了帮助", Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_setting:
Toast.makeText(this, "点击了设置", Toast.LENGTH_SHORT).show();
return true;
case android.R.id.home:
this.finish();//关闭当前页面
default:
break;
}
return super.onOptionsItemSelected(item);
}
左上角退出显示设置 1,在onCreate中设置
ActionBar actoionBar = getSupportActionBar();
actoionBar.setTitle("选项菜单");
actoionBar.setDisplayHomeAsUpEnabled(true);
然后在点击时this.finish();
2.在manifest文件中添加 android:parentActivityName=".MainActivity"
<activity
android:name=".MainActivity3"
android:exported="false"
android:label="上下文菜单"
android:parentActivityName=".MainActivity" >
</activity>
实现效果
上下文菜单
重写两个方法
onCreateContextMenu绑定menu文件 onContextItemSelected显示菜单内容
@Override
public void onCreateContextMenu(
ContextMenu menu,
View v,
ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater menuInflater =getMenuInflater();
menuInflater.inflate(R.menu.menu_context,menu);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
switch (itemId){
case R.id.menu_hepp:
Toast.makeText(this, "点击了按钮0"+item.getTitle(),
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_setting:
Toast.makeText(this, "点击了按钮1"+item.getTitle(),
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_hepp1:
Toast.makeText(this, "点击了按钮2"+item.getTitle(),
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_hepp2:
Toast.makeText(this, "点击了按钮3"+item.getTitle(),
Toast.LENGTH_SHORT).show();
return true;
case android.R.id.home:
this.finish();//关闭当前页面
default:
break;
}
return super.onContextItemSelected(item);
}
实现效果
弹出菜单
选择一个点击事件,实现PopupMenu 类,绑定文件,选择对齐方式,貌似只有左右,执行show()f方法,实现setOnMenuItemClickListener()方法
public void pop(View view) {
PopupMenu popupMenu = new PopupMenu(this,view);
popupMenu.inflate(R.menu.menu_pop);
popupMenu.setGravity(Gravity.RIGHT);
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
switch (itemId){
case R.id.menu_hepp:
//执行的代码
return true;
case R.id.menu_setting:
//执行的代码
return true;
case R.id.menu_hepp1:
//执行的代码
return true;
case R.id.menu_hepp2:
//执行的代码
return true;
default:
break;
}
return true;
}
});
}
实现效果
与上下文菜单不同的是,上下午需要长按,弹出菜单点击即可
此外菜单还可以添加分组选项group