Android_上下文菜单两种创建模式

安卓程序设计之基础界面设计button,textview以及线下布局,相对布局等使用 今天我们来学习一些安卓程序设计里的一些基础界面设计,里面用到了线性布局,相对布局,还有一些基础控件button,textview的使用。 首先先上效果图 设计思路:这是一个不太美观但是包含了基本控件和布局的使用。首先我们利用权重1:1将界面分为俩部分,并设置合适边距。然后将上部分设置为线性布局,内容垂直分布,分为上下俩个内容,分别含有textview和相对布局,相对布局里含有一个textview... 阅读详情

上下文菜单

天地之功不可仓促,艰难之业当累日月。 --后汉书

​ 当用户长按某个视图或视图元素后出现的浮动菜单,菜单中所包含的动作是与用户所选择视图元素相关的

Android系统中的两种上下文菜单模式

浮动模式

​ 用户在视图元素上执行一个长点击(按住并保持)事件,上下文菜单项浮动列表会弹出,类似对话框,显示在原有视图的上面,覆盖原有的部分用户界面。用户可以每次在浮动菜单中选择一个可执行动作。

动作模式

  • 这种模式是ActionMode的系统实现,可以在屏幕顶部显示上下文动作条,其中的菜单项是与所选视图元素相关的动作。用户可以在使用上下文菜单的动作条中选择一个或者多个动作。
  • 这种模式只有在Android3.0或者更高版本中可用,是使用上下文菜单的推荐模式。

浮动模式创建步骤

  • 创建弹出菜单配置文件XML

    <menu 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"
        tools:context="com.example.contextmenu.MainActivity">
        <item
            android:id="@+id/action_AY"
            android:orderInCategory="50"
            android:title="@string/AY"
            app:showAsAction="ifRoom" />
        <item
            android:id="@+id/action_GZ"
            android:orderInCategory="100"
            android:title="@string/GZ"
            app:showAsAction="ifRoom" />
    </menu>
    
  • 添加弹出菜单到对应的View控件上

    im = findViewById(R.id.image);
    
    • 创建上下文菜单

      • 覆盖Activity的onCreateContextMenu()方法

            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                getMenuInflater().inflate(R.menu.menu_main,menu);
                super.onCreateContextMenu(menu, v, menuInfo);
            }
        
        
      • 调用Menu的add()方法添加菜单项(Menulitem)

          menu.add(0,3,0,"玩耍");
                /*
                * 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项
                * 第二个int类型的Item ID参数,代表的是项目编号。这个参数非常重要
                * 第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认0
                * 第三个String类型的title参数,表示的是选项中的显示文字
                * */
        
    • 调用registerForContextMenu()方法为视图注册上下文菜单

         registerForContextMenu(im);
      
  • 定义菜单事件响应

    • 覆盖Activity的onContextItemSelected()来响应事件

       @SuppressLint("NonConstantResourceId")
          @Override
          public boolean onContextItemSelected(@NonNull MenuItem item) {
              switch (item.getItemId()){
                  case R.id.action_AY:
                      im.setImageResource(R.drawable.png1);
                      Toast.makeText(this,"疯狂熬夜中。。。。",Toast.LENGTH_SHORT).show();
                      break;
                  case R.id.action_GZ:
                      im.setImageResource(R.drawable.png2);
                      Toast.makeText(this,"疯狂工作中。。。。",Toast.LENGTH_SHORT).show();
                      break;
                  case 3:
                      im.setImageResource(R.drawable.png0);
                      Toast.makeText(this,"疯狂玩耍中。。。。",Toast.LENGTH_SHORT).show();
                      break;
              }
              return super.onContextItemSelected(item);
          }
      

整个java源码

public class MainActivity extends AppCompatActivity {
    ImageView im;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
		binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
           /*需要绑定的控件*/
         im = findViewById(R.id.image);
            /*注册上下文菜单到控件上*/
         registerForContextMenu(im);
    }

    /*创建上下文菜单*/
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        getMenuInflater().inflate(R.menu.menu_main,menu);
        menu.add(0,3,0,"玩耍");
        /*
        * 第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单选项
        * 第二个int类型的Item ID参数,代表的是项目编号。这个参数非常重要
        * 第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认0
        * 第三个String类型的title参数,表示的是选项中的显示文字
        * */
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    
 /*上下文菜单点击事件*/
    @SuppressLint("NonConstantResourceId")
    @Override
    public boolean onContextItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_AY:
                im.setImageResource(R.drawable.png1);
                Toast.makeText(this,"疯狂熬夜中。。。。",Toast.LENGTH_SHORT).show();
                break;
            case R.id.action_GZ:
                im.setImageResource(R.drawable.png2);
                Toast.makeText(this,"疯狂工作中。。。。",Toast.LENGTH_SHORT).show();
                break;
            case 3:
                im.setImageResource(R.drawable.png0);
                Toast.makeText(this,"疯狂玩耍中。。。。",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onContextItemSelected(item);
    }
}

actionMode创建步骤(动作模式)

  • 创建弹出菜单配置文件XML

    <menu 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"
        tools:context="com.example.contextmenu.MainActivity">
        <item
            android:id="@+id/action_AY"
            android:orderInCategory="50"
            android:title="@string/AY"
            android:icon="@drawable/png1"
            app:showAsAction="ifRoom" />
        <item
            android:id="@+id/action_GZ"
            android:orderInCategory="100"
            android:title="@string/GZ"
            android:icon="@drawable/png2"
            app:showAsAction="ifRoom" />
    </menu>
    
  • 添加弹出菜单到对应的View控件上

    findViewById(R.id.image2)
    
    • 创建ActionMode

      private android.view.ActionMode actionMode;

      private ActionMode actionMode;
      
    • 实现Action Mode的callback接口

       final ActionMode.Callback callback = new ActionMode.Callback() {
                  @Override
                  public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
                      actionMode.getMenuInflater().inflate(R.menu.menu_main,menu);
                      return true; //返回值为true
                  }
      
                  @Override
                  public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
                      return false;
                  }
      
                  @Override
                  public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
                      switch (menuItem.getItemId()){
                          case R.id.action_AY:
                              im.setImageResource(R.drawable.png1);
                              Toast.makeText(ContextMenu2.this,"疯狂熬夜中。。。。",Toast.LENGTH_SHORT).show();
                              break;
                          case R.id.action_GZ:
                              im.setImageResource(R.drawable.png2);
                              Toast.makeText(ContextMenu2.this,"疯狂工作中。。。。",Toast.LENGTH_SHORT).show();
                              break;
                      }
                      return true;
                  }
      
                  @Override
                  public void onDestroyActionMode(ActionMode actionMode) {
      
                  }
              };
      
    • 调用setOnlongClickListener()方法为视图注册上下文菜单

       findViewById(R.id.image2).setOnLongClickListener();
      
  • 定义菜单响应事件

    • 设置控件的OnLongClickListener()来响应事件

       findViewById(R.id.image2).setOnLongClickListener(new View.OnLongClickListener() {
                  @Override
                  public boolean onLongClick(View view) {
                      if(actionMode != null){
                          return false;
                      }
                      actionMode = startActionMode(callback);
                      view.setSelected(true);
                      return true;
                  }
              });
      

整个java源码

public class ContextMenu2 extends AppCompatActivity {
    private ActionMode actionMode;
    ImageView im;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = ActivityContextMenu2Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        im =findViewById(R.id.image2);

       final ActionMode.Callback callback = new ActionMode.Callback() {
            @Override
            public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
                actionMode.getMenuInflater().inflate(R.menu.menu_main,menu);
                return true; //返回值为true
            }

            @Override
            public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
                return false;
            }

            @Override
            public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
                switch (menuItem.getItemId()){
                    case R.id.action_AY:
                        im.setImageResource(R.drawable.png1);
                        Toast.makeText(ContextMenu2.this,"疯狂熬夜中。。。。",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.action_GZ:
                        im.setImageResource(R.drawable.png2);
                        Toast.makeText(ContextMenu2.this,"疯狂工作中。。。。",Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }

            @Override
            public void onDestroyActionMode(ActionMode actionMode) {

            }
        };

        findViewById(R.id.image2).setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                if(actionMode != null){
                    return false;
                }
                actionMode = startActionMode(callback);
                view.setSelected(true);
                return true;
            }
        });



    }
}
上下文菜单与上下文操作模式 android中上下文菜单与上下文操作模式的简介与使用 立即下载

相关推荐

Android多种菜单样式的代码例子

Android多种菜单样式的代码例子。用于演示选项菜单OptionsMenu、上下文菜单ContextMenu,以及使用弹窗控件PopupWindow来自定义菜单的功能。

android创建上下文菜单(即长按菜单)

一、实现长安菜单的步骤 1、调用方法 registerForContextMenu() 把view向系统注册上下文菜单。 2、使用onCreateContextMenu()创建菜单。 3、使用onContextItemSelected()实现菜单的点击事件。

longyi_java的专栏 1348

android 选项菜单和上下文菜单

android studio写的选项菜单和上下文菜单,在同一个项目中了

Android入门之两种方法实现选项菜单和上下文菜单的创建(一)

Android入门之两种方法实现选项菜单和上下文菜单的创建(一)

派大星子的博客 2133

创建上下文菜单

创建上下文菜单

利用featureCounts实现高效转录本定量:从比对到下游分析

本文详细介绍了利用featureCounts工具进行RNA-seq转录本定量的完整流程。从软件安装、输入文件准备,到核心命令参数解析与批量样本处理,再到将生成的计数矩阵无缝衔接至DESeq2进行差异表达分析,提供了从比对到下游分析的一站式实战指南。文章重点阐述了featureCounts在效率与易用性上的优势,并分享了常见问题排查与性能优化技巧,帮助研究者高效完成转录本定量这一关键步骤。

weixin_29069131的博客 318

Android Studio中上下文菜单的使用

上下文菜单指的是根据点击的位置来判断弹出什么样的菜单,例如在Android Studio的文件夹上长按弹出的菜单(图1)与某个app图标上长按弹出的菜单(图2)不同。 图1 文件夹上长按弹出的菜单 图2 app图标上长按弹出的菜单 使用上下文菜单主要分为三个步骤,第一步是创建上下文菜单;第二步是注册上下文菜单;第三步是为上下文菜单创建响应。 1 创建上下文菜单 创建上下文菜单分为两个步骤,一是通过XML文件创建菜单,二是将XML实例化为Menu类的对象。 1.1通过XML文件创建..

hou09tian的博客 4364

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 711

android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?

编辑后评论:事实证明,使用RelativeLayout进行这项工作并不容易.在答案的底部我已经包含了一个RelativeLayout,它提供了所需的效果,但只有在它包含在ListView中之后.之后,出现了问题中描述的相同问题.这是通过使用LinearLayout(s)来修复的.android:layout_width="wrap_content"android:layout_height="wr...

weixin_35452394的博客 296

示波器学习(一):示波器的作用、类型和基本结构

示波器的作用、使用场景;示波器的类型和基本结构介绍

qq_41300605的博客 9141

详解舵机的基本原理以及控制方法

文章目录什么是舵机?伺服控制硬件连接舵机规格SG90MG90SMG996R总结 什么是舵机? 舵机是伺服电机的一种,伺服电机就是带有反馈环节的电机,我们可以通过伺服电机进行精确的位置控制或者输出较高的扭矩; 舵机也叫也叫 RC 伺服器,通常用于机器人项目,也可以在遥控汽车,飞机等航模中找到它们。 类似舵机这样的伺服系统通常由小型电动机,电位计,嵌入式控制系统和变速箱组成。 电机输出轴的位置由内部电位计不断采样测量,并与微控制器(例如STM32,Arduino)设置的目标位置进行比较; 根据相应的偏差,控制

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 4万+

Android 三种菜单讲解(Menus )

创建上下文菜单 上下文菜单提供了影响指定项目或UI中内容结构的动作。你能够给任何View对象提供一个内容菜单,但是它们最常用于ListView、GridView或集合类型的View对象的项目中,用户能够执行每个项目上的动作。 有两个方法来提供上下文动作: 1.  在一个浮动的内容菜单中提供上下文动作。当用户在一个声明支持上下文菜单的View对象上长按(long-click)时,会显示一个浮动

蚁人日记 1312

立项书8分钟定生死?手把手教你用ChatGPT辅助打造高水平申报书,让评审专家一看就想打高分!

宏大叙事、空话堆砌只会让评审绕晕,不如聚焦一个具体问题,拿出清晰的研究路径、扎实的设计方案,把“我想做什么、为什么做、打算怎么做”讲明白。对评审来说,关键不在你读了多少,而在你能否看清领域的共识、争议和空白,GPT的作用就在于帮你理清研究脉络,发现问题结构,聚焦那些还没被充分讨论的变量或方法,去提升综述的深度。之前要用到ProcessOn、Draw.io等工具画流程图,现在有了ai虽然方便了,但也需要多次调教,如果嫌麻烦,七哥给大家准备了课题申报常用的流程图,技术路线图,方便大家直接拿来编辑填空使用。

智能AI让学术科研更容易 291

Creating Contextual Menus创建上下文菜单

A contextual menu offers actions that affect a specific item or context frame in the UI. You can provide a context menu for any view, but they are most often used for items in a ListView, GridView,

fancychendong的专栏 1846

5.4 GTT BO的内存分配分析

本文分析了AMD GPU驱动中的GTT技术实现。GTT作为GPU页表,负责管理主机内存与GPU虚拟地址的映射,支持大容量内存访问和统一寻址。文章详细介绍了GTT的核心数据结构amdgpu_gtt_mgr、初始化流程,以及BO(Buffer Object)创建时GTT区间的分配与释放机制。GTT管理通过TTM框架实现分层设计,提供内存统计、兼容性检查等接口,并支持动态迁移、多进程隔离等高级特性。该机制为AMD GPU提供了高效灵活的内存管理基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3738

YOLOv12涨点改进 | 全网首发,Conv改进篇 | CVPR 2025 | YOLOv12引入FDConv频率动态卷积,含A2C2f_FDConv二次创新模块,能够捕捉更加丰富和复杂的特征信息

本文提出了一种改进YOLOv12目标检测模型的方法——频率动态卷积(FDConv)。FDConv通过增强卷积核的频率响应多样性,使模型能够更好地处理不同频率信息,从而提高检测精度。该方法包含三个关键组件:傅里叶离散权重(FDW)实现频率分组,核空间调制(KSM)动态调整频率响应,以及频率带调制(FBM)进行频域调节。实验结果表明,FDConv能以较少的参数增长(仅增加3.6M)显著提升模型性能,在目标检测、实例分割等任务中优于传统动态卷积方法。该方法可灵活集成到ResNet、ConvNeXt等多种架构中。

Ai缝合怪、助力小伙伴高效发论文 421

Android 用户界面---菜单(Menus 二)

From: http://blog.youkuaiyun.com/think_soft/article/details/7350177 创建上下文菜单 上下文菜单提供了影响指定项目或UI中内容结构的动作。你能够给任何View对象提供一个内容菜单,但是它们最常用于ListView、GridView或集合类型的View对象的项目中,用户能够执行每个项目上的动作。 有两个方法来提供上下文动作: 1.  在一

fyfcauc的专栏 689

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7214

【Android 开发】:UI控件之 Menu 菜单的的使用(三)

上一讲我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下文菜单] 这一讲我们来讲解创建上下文菜单的第二种使用方式:Using the contextual action mode [使用上下文动作模式] 未完待续,持续更新中.......

AHuier_Techblog :如果我不在写代码,你就 @me 3380

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android API Guides——User Interface

Menus Creating Contextual Menus 2 ways: 1. floating context menu   2.contexual action mode.  对比如图: floating context menu:   1.找到view  ->  registerForContextMenu()   2. onCreateContextMenu()

smfwuxiao的专栏 2478

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

listview上下文菜单_Android ListView上下文菜单:ActionMode.CallBack

listview上下文菜单 在这篇文章中,我们要分析上下文菜单 ( contextual action bar )。 这是与特定项目相关的菜单。 上下文菜单几乎可以应用于所有视图,但通常与ListView一起使用 。 我们谈论了很多列表视图,因为它是最重要的组件之一。 我们可以区分两种不同类型的上下文菜单: 浮动菜单 上下文动作模式(ActionMode) 浮动菜单用于低于3....

602

Android上下文菜单

安卓上下文菜单与选项菜单方法基本相似,因为ContextMenu继承了Menu,因此程序可以用相同的方法为它添加菜单项,开发上下文菜单需要重写 onCreateContextMenu(ContextMenu menu,View source,ContextMenu.ContextMenuInfo menuInfo)方法 调用Activity的registerForContextMenu(Vie

1014

Android菜单创建和使用

Menu分类: 1.选项菜单(OptionMenu) 选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作。 2.上下文菜单(ContextMenu) 3.弹出菜单(PopupMenu)

weixin_65838109的博客 4009
上一篇: Android_ 弹出菜单创建
下一篇: Android_菜单组
ColdKite_鸢
博客等级 码龄7年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ColdKite_鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值