常见菜单
菜单资源文件
菜单资源文件目录
目录需要手动在res目录下创建
创建菜单资源文件
配置资源文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/msg" android:title="消息"></item>
<item android:id="@+id/index" android:title="首页"></item>
<item android:id="@+id/help" android:title="帮助"></item>
</menu>
选项菜单
配置与监控菜单项目
1、MainActivity.java
package com.example.login_status_page;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 配置选项菜单到布局中
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = new MenuInflater(MainActivity.this);
menuInflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
// 监听选项菜单中选项的点击
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.msg:
Toast.makeText(MainActivity.this, "点击了信息", Toast.LENGTH_SHORT).show();
break;
case R.id.help:
Toast.makeText(MainActivity.this, "点击了帮助", Toast.LENGTH_SHORT).show();
break;
case R.id.index:
Toast.makeText(MainActivity.this, "点击了首页", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
上下文菜单
如下长按图片显示的菜单
创建上下文菜单
1、menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/coll" android:title="收藏"></item>
<item android:id="@+id/upp" android:title="举报"></item>
<item android:id="@+id/none" android:title="不显示"></item>
</menu>
2、MainActivity.java
package com.example.login_status_page;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.img);
imageView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
// 注册
registerForContextMenu(view);
// 打开
openContextMenu(view);
// 消化点击事件,也就是事件传递到这里就结束了,不会触发后续的其他行为
return true;
}
});
}
// 创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater menuInflater = new MenuInflater(MainActivity.this);
menuInflater.inflate(R.menu.menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
// menu.add(1,1,1,"收藏"); Java代码动态添加 (组id , 本身id , 排序id, 显示文字)
// menu.add(2,2,2,"举报");
}
// 监听上下文菜单点击事件
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.coll:
Toast.makeText(MainActivity.this, "选中了收藏", Toast.LENGTH_SHORT).show();
break;
case R.id.upp:
Toast.makeText(MainActivity.this, "选中了举报", Toast.LENGTH_SHORT).show();
break;
case R.id.none:
Toast.makeText(MainActivity.this, "选中了不显示", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}