【例2-6】 上下文菜单应用示例
上下文菜单类似于电脑右键菜单,长按这个视图对象,就会弹出一个浮动菜单。

布局文件activity_contextmenu.xml的源代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上下文菜单示例"
android:textSize="24sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="62dp"
app:layout_constraintHorizontal_bias="0.2" />
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/flower"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintVertical_bias="0.4"
app:layout_constraintHorizontal_bias="0.2"
android:layout_marginLeft="8dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
控制文件ContextMenuActivity.java源代码
package com.example.chap02;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class ContextMenuActivity extends Activity
{
TextView txt;
ImageView img;
private static final int item1 = Menu.FIRST;
private static final int item2 = Menu.FIRST+1;
private static final int item3 = Menu.FIRST+2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contextmenu);
txt=(TextView)findViewById(R.id.txt);
txt.setText("请长按图片或文字");
img=(ImageView)findViewById(R.id.img);
registerForContextMenu(txt);
registerForContextMenu(img);
}
//上下文菜单,长按特定视图会激活上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View view,
ContextMenuInfo menuInfo) {
//添加菜单项
menu.add(0, item1, 0, "复制");
menu.add(0, item2, 0, "收藏");
menu.add(0, item3, 0, "提醒");
}
//菜单单击响应
@Override
public boolean onContextItemSelected(MenuItem item){
//获取当前被选择的菜单项的信息
switch(item.getItemId())
{
case item1:
//复制代码
break;
case item2:
//收藏代码
break;
case item3:
//提醒代码
break;
}
return true;
}
}
打开项目配置文件AndroidManifest.xml,修改工程要启动的Activity类名
<activity android:name=".ContextMenuActivity ">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

