效果图:

图1:

Android 实现【长按】Button 出现一个菜单_长按按钮

图2:

Android 实现【长按】Button 出现一个菜单_长按按钮_02

图3:

Android 实现【长按】Button 出现一个菜单_Component_03

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);
    }
    
}

点击运行即可 !