• Android中实现长按照片弹出右键菜单


    场景

    效果

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局。

    然后添加一个ImageView,并设置id属性和图片源。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical"
        tools:context=".LongClickActivity">
    
        <ImageView
            android:id="@+id/image"
            android:src="@drawable/dog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>

    然后来到Activity,首先在activity中重写onCreateContextMenu方法,此方法能新增菜单,并添加菜单项

        //在activity中重写onCreateContextMenu菜单,为菜单添加选项值
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add("收藏");
            menu.add("举报");
        }

    然后在onCreate方法中将长按事件注册到菜单中并打开菜单。

       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_long_click);
            //将长按事件注册到菜单中,并打开菜单
            ImageView imageView = (ImageView) findViewById(R.id.image);
            imageView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //注册菜单
                    registerForContextMenu(v);
                    //打开菜单
                    openContextMenu(v);
                    return true;
                }
            });
        }

    完整示例代码

    package com.badao.relativelayouttest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.View;
    import android.widget.ImageView;
    
    public class LongClickActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_long_click);
            //将长按事件注册到菜单中,并打开菜单
            ImageView imageView = (ImageView) findViewById(R.id.image);
            imageView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //注册菜单
                    registerForContextMenu(v);
                    //打开菜单
                    openContextMenu(v);
                    return true;
                }
            });
        }
    
        //在activity中重写onCreateContextMenu菜单,为菜单添加选项值
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add("收藏");
            menu.add("举报");
        }
    }
    
     
  • 相关阅读:
    js对于Select的删除操作时需要注意的问题
    [转]使IIS支持PHP的配制方法
    Web工作流
    创建新的DOM节点以后,如何增加事件,和属性。
    Javascript attachEvent传递参数的办法
    [转]Javascript 操作Cookies类
    ASP SESSION莫名其妙丢失的原因及解决方法
    DataTable的2个方法;
    [推荐]美国网站兵败中国的10大思路性执行错误
    Blog from Office Word 2007
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12173456.html
Copyright © 2020-2023  润新知