昨天学习了popmenu和optionmenu的使用,今天学习的是contentmenu的使用,下面的代码是作者在昨天的基础上进行添加,但是为了方便读者们运行,作者会在最下方贴出全部的代码,大家可以免费下载,若不能下载,可以私信作者。

contentmenu的使用方法

  • Step 1:重写onCreateContextMenu()方法
  • Step 2:为view组件注册上下文菜单,使用registerForContextMenu()方法,参数是View
  • Step 3:重写onContextItemSelected()方法为菜单项指定事件监听器

编写contextmenu.xml

之前我们是在activity中之间创建的菜单,这里我们使用XML进行创建,原因在于,使用XML便于后期的维护和修改,不需要每次都重新分配ID

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><group android:checkableBehavior="none"><item android:id="@+id/blue" android:title="蓝色"/><item android:id="@+id/red" android:title="红色"/><item android:id="@+id/green" android:title="绿色"/></group>
</menu>

添加一个Textview

在acticity_miain.xml中添加一个textview

 <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/view2"android:layout_marginTop="100dp"android:text="使用contentmenu变色"/>

编写activity的逻辑

这里贴出来的是所有的代码

package com.example.popmenu;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private Button menu1;final private int red = 1;final private int blue = 2;final private int green = 3;private TextView view1, view2;@SuppressLint("MissingInflatedId")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);menu1 = findViewById(R.id.menu1);view1 = findViewById(R.id.view);view2 = findViewById(R.id.view2);registerForContextMenu(view2);menu1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {PopupMenu popup = new PopupMenu(MainActivity.this, menu1);popup.getMenuInflater().inflate(R.menu.popmenu, popup.getMenu());popup.show();}});}public boolean onCreateOptionsMenu(Menu meun) {meun.add(1, red, 1, "红色");meun.add(1, blue, 2, "蓝色");meun.add(1, green, 3, "绿色");return true;}public boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();switch (id) {case red:view1.setTextColor(Color.RED);break;case blue:view1.setTextColor(Color.BLUE);break;case green:view1.setTextColor(Color.GREEN);break;}return super.onOptionsItemSelected(item);}//重写上下文菜单的创建方法@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {MenuInflater inflater = new MenuInflater(this);inflater.inflate(R.menu.contextmenu, menu);super.onCreateContextMenu(menu, v, menuInfo);}//上下文菜单被点击触发@Overridepublic boolean onContextItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {//这里的ID是写在contentmenu.xml中的case R.id.blue:view2.setTextColor(Color.BLUE);Log.d("color","blue");break;case R.id.red:view2.setTextColor(Color.RED);Log.d("color","red");break;case R.id.green:view2.setTextColor(Color.GREEN);Log.d("color","green");break;}return true;}
}

运行效果

完整的代码链接

https://download.csdn.net/download/zijindanshutong/86743126

contextmenu的使用相关推荐

  1. android fragment contextmenu,在 fragment 中,无法为listView项创建 contextMenu_android_开发99编程知识库...

    在 ListView 上單擊每個項目時創建菜單. 我創建了兩個場景:在 Activtity 和 Fragment 上創建 ContextMenu . 但是,它只在 Activity 上運行,而不是在 ...

  2. JQuery之ContextMenu(右键菜单)

    JQuery之ContextMenu(右键菜单) 插件下载地址: http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextme ...

  3. Leaflet中使用Leaflet.contextmenu插件实现地图上添加鼠标右键菜单

    场景 Leaflet快速入门与加载OSM显示地图: Leaflet快速入门与加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的基础上,怎样使用Leaflet.co ...

  4. java 树 右键菜单_VUE实现Studio管理后台(八):用右键菜单contextmenu,编辑树形结构...

    RXEdior预设会有文件管理功能,但是灵活性需求不大,目前的设想是文件夹不允许修改,只允许增删改文件.基于这样的设想,把界面实现成这个效果: 这个功能并不是一个通用功能,并且我们做的代码,也没有按照 ...

  5. Android中文API(97)—— ContextMenu

    前言 本章内容是android.view.ContextMenu,版本为Android 2.3 r1,翻译来自"Kun",再次感谢"Kun" !期待你一起参与A ...

  6. 【WPF】右键菜单ContextMenu可点击区域太小的问题

    [WPF]右键菜单ContextMenu可点击区域太小的问题 原文:[WPF]右键菜单ContextMenu可点击区域太小的问题 问题描述 正常使用右键菜单ContextMenu时,如果菜单项是不变的 ...

  7. wp7 通过后台代码给ListBoxItem添加ContextMenu 属性

    //创建ListBoxItem ListBoxItem li = new ListBoxItem();  li.Content = "test"; //创建ContextMenu ...

  8. WPF 的 ElementName 在 ContextMenu 中无法绑定成功?试试使用 x:Reference!

    原文:WPF 的 ElementName 在 ContextMenu 中无法绑定成功?试试使用 x:Reference! 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可 ...

  9. HTML5事件——contextmenu 隐藏鼠标右键菜单

    在window中单击右键或在Mac中Ctrl+单击时会触发contextmenu事件,通过取消其默认动作能够提供自己定义菜单. 首先先写一个自己的菜单: <style>ul, li {ma ...

  10. JMetro“ Metro”选项卡,Java的TreeView和ContextMenu(JavaFX)

    我刚刚发布了JMetro的新更新,将版本升级到3.3.0. 在此更新中,您将找到: 新的TreeView Fluent设计系统(Metro)启发风格: 新的Tabs和TabPane FDS启发风格: ...

最新文章

  1. oracle表空间更改用户,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...
  2. 其他算法-两大随机采样方法简介
  3. 【Android 逆向】Android 系统文件分析 ( Android 系统 root 环境准备 | 查看 Android 根目录信息 )
  4. buaaoo_fourth_assignment
  5. React-引领未来的用户界面开发框架-读书笔记(四)
  6. [vue] 怎么修改vue打包后生成文件路径?
  7. (王道408考研操作系统)第三章内存管理-第二节2:请求分页管理方式
  8. HNOI2010——弹飞绵羊(lct)
  9. 让你每天抽出两小时陪小孩子读书,你能坚持吗?
  10. angular 的进一步深入理解
  11. IntelliJ IDEA 导入新项目以后的简单配置
  12. KVM 介绍(2):CPU 和内存虚拟化
  13. 微软应用商店有哪些值得推荐的应用
  14. 解决Linux下redis客户端工具连接不到redis服务
  15. 简化预测集合的永磁同步电机的无差拍预测转矩控制系统Simulink仿真
  16. vue3的生命周期函数
  17. quartus如何生成sof_如何高效利用Arm DesignStart计划开放的处理器核-工具篇
  18. 大数据核心技术有哪些 怎么样学好大数据开发
  19. Postgresql - 监控 moniter — pgbadger
  20. 盘点数据分析中常用的图表类型

热门文章

  1. python中xml格式的转换
  2. 娱乐文化公司分享时代完成新三板摘牌赴美IPO
  3. 做自媒体短视频相对文章来说有着很多的优势
  4. 产品经理的思考利器——UML(7000字长文)
  5. 配置CPU温度.风扇转速,硬盘温度监控
  6. 马克思主义哲学是否只是“抄袭”和断章取义了别人的思想
  7. 电脑儿童,为什么电脑儿童越来越多?
  8. Unity插件NativeGallery拉取手机相册的使用简记
  9. 开机弹出网页msftconnecttest com/redirect解决方法
  10. 【小白话CV】CycleGAN论文解读+代码实战(萌宠转宝可梦)