当前位置: 首页 > news >正文

Android菜单(上下文菜单)(选项菜单)

菜单资源文件通常放置在res\menu目录下,在创建项目时,默认不自动创建menu目录,所以需要手动创建。Android Resource Directory->value menu

菜单资源根元素通常是<menu></menu>标记,子元素为<item></item>和<group></group>

<item></item>标记常用属性:

android:id 用于为菜单设置ID
android:title 用于为菜单项设置标题
android:alphabeticShortcut 用于为菜单项指定字符快捷键
android:numericShortcut  用于为菜单项指定数字快捷键
android:icon  用于为菜单项指定图标
android:enable  用于指定该菜单项是否可用
android:checkable  用于指定该菜单项是否可选
android:checked  用于指定该菜单项是否选中
android:visible  用于指定该菜单项是否可见

<group></group>标记常用属性:

android:id 用于为菜单组设置ID
android:heckableBehavior 用于为指定菜单组选择行为,值可以为 none(不可选) all(多选) single(单选)
android:menuCategory  用于为指定菜单组进行分类,指定优先级,值可以为container、system、secondary和alternative
android:enable  用于为指定菜单组中全部菜单项是否可用
android:visible  用于为指定菜单组中全部菜单项是否可见

<item>标记中还可以包含<menu>标记,用于显示子菜单

<group>标记中可有多个<item>标记,用于组成菜单组

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:title="item1"></item><item android:title="item2"><menu><item android:title="item2-1"/><item android:title="item2-2"/></menu></item><group><item android:title="item3"/><item android:title="item4"/></group>
</menu>

1.上下文菜单  长按注册的控件显示菜单

public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {... ...TextView textView=findViewById(R.id.textView);//注册上下文菜单  长按注册的控件显示菜单registerForContextMenu(textView);}public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {//用于创建菜单(上下文菜单)MenuInflater menuInflater=new MenuInflater(MainActivity.this);menuInflater.inflate(R.menu.menu1,menu);}public boolean onContextItemSelected(@NonNull MenuItem item) {//用于选择菜单项(上下文菜单)int groupId=item.getGroupId();int itemId=item.getItemId();if(groupId==R.id.~){~}if(itemId==R.id.~){~}return super.onContextItemSelected(item);}
}

2.选项菜单(隐藏标题栏将无法使用)  点击标题最右侧三个点显示菜单

public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {... ...}public boolean onCreateOptionsMenu(Menu menu) {//用于创建菜单(选项菜单)MenuInflater menuInflater=new MenuInflater(MainActivity.this);menuInflater.inflate(R.menu.menu1,menu);return super.onCreateOptionsMenu(menu);}public boolean onOptionsItemSelected(@NonNull MenuItem item) {//用于选择菜单项(选项菜单)int groupId=item.getGroupId();int itemId=item.getItemId();if(groupId==R.id.~){~}if(itemId==R.id.~){~}return super.onOptionsItemSelected(item);}
}

http://www.lryc.cn/news/163002.html

相关文章:

  • l8-d11 TCP连接管理与UDP协议
  • Python+Requests+Pytest+Excel+Allure 接口自动化测试项目实战【框架之间的对比】
  • 商业航天进展迅速:中国航天科工三院成功完成电磁发射试验
  • MySQL和Oracle数据库引擎
  • CloudQuery X PolarDB:让数据库管理更简单
  • 机器学习开源工具BatteryML,一站式分析与预测电池性能
  • TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!
  • LLMs之Baichuan 2:《Baichuan 2: Open Large-scale Language Models》翻译与解读
  • 听书网站模板源码 懒人书院网站源码 苹果cms手机听书网站模版源码 支持手机端
  • 算法 数据结构 斐波那契数列 递归实现斐波那契数列 斐波那契递归的优化 斐波那契数列递归求解 多路递归实现 斐波那契算法系列 数据结构(十一)
  • 【面试经典150 | 双指针】两数之和
  • 桥接模式简介
  • 零钱兑换00
  • JavaScipt中如何实现函数缓存?函数缓存有哪些场景?
  • android studio的Android Drawable Preview
  • 基于云计算的区域LIS系统系统源码
  • VR农学虚拟仿真情景实训教学演示
  • sklearn中make_blobs方法:聚类数据生成器
  • Win11自带微软输入法怎么输入π及其他希腊字母
  • 关于MyBatisPlus框架下出现xml里面定义的方法无法被正确识别以及提示调用mysql存储过程时参数无效的问题
  • vscode路径别名文件跳转解决办法
  • layui 富文本编辑器layedit 以及 图片转base64前端页面显示
  • 服务器给前端实时推送数据轻量化解决方案eventSource+Springboot
  • 数据结构与算法:数据结构基础
  • virtualbox虚拟机中安装FreeDOS系统和DJGPP编译环境
  • JAVASE事件监听
  • ubuntu14.04改静态ip
  • “文件的上传与下载:实现与优化“
  • uboot顶层Makefile前期所做工作说明三
  • Mysql树形表的两种查询方案(递归与自连接)