【达内课程】ContextMenu

【达内课程】OptionsMenu

这里写图片描述

栗子:创建一个ContextMenu

public class MenuActivity extends AppCompatActivity {
    private View tv;
    private View img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        tv = findViewById(R.id.tv);
        img = findViewById(R.id.img);

        //注册上下文菜单
        registerForContextMenu(tv);
        registerForContextMenu(img);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        getMenuInflater().inflate(R.menu.main,menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_copy:
                Toast.makeText(this,"点击了Copy",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onContextItemSelected(item);
    }
}

res下menu文件夹下的main菜单文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_copy"
        android:orderInCategory="100"
        app:showAsAction="never"
        android:title="Copy"/>
</menu>

效果

栗子:根据不同控件弹出不同菜单

public class MenuActivity extends AppCompatActivity {
    private View tv;
    private View img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        tv = findViewById(R.id.tv);
        img = findViewById(R.id.img);

        //注册上下文菜单
        registerForContextMenu(tv);
        registerForContextMenu(img);
    }

    public static final int MENU_ITEM_COPY_TEXT = 1;
    public static final int MENU_ITEM_SAVE_TO_FILE = 2;
    public static final int MENU_ITEM_EDIT_IMAGE = 3;
    public static final int MENU_ITEM_RESEND_IMAGE_ = 4;
    @Override
    public void onCreateContextMenu(ContextMenu menu,
                                     View v,//长按哪个控件弹出的菜单
                                     ContextMenu.ContextMenuInfo menuInfo) {
        switch(v.getId()){
            case R.id.tv:
                menu.add(Menu.NONE,1,Menu.NONE,"复制文字");
                menu.add(Menu.NONE,2,Menu.NONE,"保存到文件");
                break;
            case R.id.img:
                menu.add(Menu.NONE,3,Menu.NONE,"编辑图片");
                menu.add(Menu.NONE,4,Menu.NONE,"转发图片");
                break;

        }
        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case MENU_ITEM_COPY_TEXT:
                Toast.makeText(this,"点击了 复制文字",Toast.LENGTH_SHORT).show();
                break;
            case MENU_ITEM_SAVE_TO_FILE:
                Toast.makeText(this,"点击了 保存到文件",Toast.LENGTH_SHORT).show();
                break;
            case MENU_ITEM_EDIT_IMAGE:
                Toast.makeText(this,"点击了 编辑图片",Toast.LENGTH_SHORT).show();
                break;
            case MENU_ITEM_RESEND_IMAGE_:
                Toast.makeText(this,"点击了 转发图片",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onContextItemSelected(item);
    }
}

猜你喜欢

转载自blog.csdn.net/u010356768/article/details/80430881