效果图:
图1:
图2:
图3:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_long"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="长按我"
android:textSize="20dp"
android:background="#00aef2"
android:textColor="#fff"/>
</RelativeLayout>
MainActivity.java :
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.btn_long);
/**
* 为某个视图添加创建 ContextMenu 的监听(需要长按触发)
* 长按按钮,触发 Menu 的显示,可以理解为这个按钮长按的监听器
*/
button.setOnCreateContextMenuListener(this);
}
/**
* 显示菜单的回调方法
* 向 Menu 中添加 MenuItem , 通过menu.add()方法实现
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0,1,0,"西瓜");
menu.add(0,2,0,"芒果");
menu.add(0,3,0,"橙子");
}
/**
* 当选择某个菜单项的回调方法
* 选择某个 MenuItem 时做出相应的响应 ,根据 ItemId 做响应
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case 1:
Toast.makeText(this,"西瓜",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this,"芒果",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this,"橙子",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
点击运行即可 !