Android中实现长按照片弹出右键菜单
程序员文章站
2023-09-07 09:49:56
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布 ......
场景
效果
注:
博客:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
将布局改为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("举报"); } }