-
android:menuCategory=“container”
-
android:showAsAction=“never”
-
android:title=“menu1”/>
-
<item
-
android:id=“@+id/action_menu2”
-
android:orderInCategory=“200”
-
android:menuCategory=“system”
-
android:showAsAction=“never”
-
android:title=“menu2”/>
-
</group>
-
<group android:id=“@+id/group2”>
-
<item
-
android:id=“@+id/action_menu3”
-
android:orderInCategory=“100”
-
android:menuCategory=“secondary”
-
android:showAsAction=“never”
-
android:title=“menu3”/>
-
<item
-
android:id=“@+id/action_menu4”
-
android:orderInCategory=“400”
-
android:menuCategory=“alternative”
-
android:showAsAction=“never”
-
android:title=“menu4”/>
-
</group>
-
</menu>
标签的属性含义解释:
属性名 | 作用 |
menuCategory | 设置菜单项的种类。有四个可选值:Container、system、secondary、alternative。通过menuCategory属性可以控制菜单项的位置。 |
orderInCategory | 同类菜单的排列顺序,为整数值,值越大显示越靠前。 |
titleCondensed | 菜单项的短标题。当菜单文字太长时显示这个 |
alphabeticShortcut | 菜单项的字母快捷键。 |
showAsAction | Never:总是显示在移除菜单中。 Always:显示在ActionBar上。 ifRoom:如果actionBar空间足够就显示在ActionBar上。 withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。 collapseActionView: <item android:id=”@+id/menu_search” android:showAsAction=”ifRoom|collapseActionView” android:actionViewClass=”android.widget.SearchView” /> android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。 参考链接:http://blog.csdn.NET/think_soft/article/details/7370686 |
标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。
在Activity里加载菜单
[java] view plain copy
-
@Override
-
public boolean onCreateOptionsMenu(Menu menu) {
-
// Inflate the menu; this adds items to the action bar if it is present.
-
getMenuInflater().inflate(R.menu.menu, menu);
-
return true;
-
}
方法二:通过代码添加menu
[java] view plain copy
-
@Override
-
public boolean onCreateOptionsMenu(Menu menu) {
-
//调用这个方法设置图标的可见性
-
setIconVisible(menu);
-
/*
-
* add()方法的四个参数,依次是:
-
* 1、组别,如果不分组的话就写Menu.NONE,
-
* 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
-
* 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前
-
* 4、文本,菜单的显示文本
-
*/
-
menu.add(Menu.NONE, Menu.FIRST + 1, 5, “删除”).setIcon(
-
android.R.drawable.ic_menu_delete);
-
// setIcon()方法设置菜单图标
-
menu.add(Menu.NONE, Menu.FIRST + 2, 2, “保存”).setIcon(
-
android.R.drawable.ic_menu_save);
-
menu.add(Menu.NONE, Menu.FIRST + 3, 6, “帮助”).setIcon(
-
android.R.drawable.ic_menu_help);
-
menu.add(Menu.NONE, Menu.FIRST + 4, 1, “添加”).setIcon(
-
android.R.drawable.ic_menu_add);
-
menu.add(Menu.NONE, Menu.FIRST + 5, 4, “详细”).setIcon(
-
android.R.drawable.ic_menu_info_details);
-
menu.add(Menu.NONE, Menu.FIRST + 6, 3, “发送”).setIcon(
-
android.R.drawable.ic_menu_send);
-
return true;
-
}
-
//使用反射设置menu图标的可见性
-
private void setIconVisible(Menu menu) {
-
try {
-
Class clazz = Class
-
.forName(”com.android.internal.view.menu.MenuBuilder”);
-
Method m = clazz.getDeclaredMethod(”setOptionalIconsVisible”,
-
boolean.class);
-
m.setAccessible(true);
-
m.invoke(menu, true);
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
}
菜单显示效果如下图:
选项菜单设置点击监听
[java] view plain copy
-
@Override
-
public boolean onOptionsItemSelected(MenuItem item) {
-
Log.i(TAG, ”onOptionsItemSelected”);
-
int id = item.getItemId();
-
switch (id) {
-
case Menu.FIRST+1:
-
Toast.makeText(MenuActivity.this, “点击了删除按钮”, Toast.LENGTH_SHORT).show();
-
break;
-
default:
-
break;
-
}
-
return super.onOptionsItemSelected(item);
-
}
上下文菜单
当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。
创建上下文菜单的步骤:
① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
结尾
最后,针对上面谈的内容,给大家推荐一个Android资料,应该对大家有用。
首先是一个知识清单:(对于现在的Android及移动互联网来说,我们需要掌握的技术)
泛型原理丶反射原理丶Java虚拟机原理丶线程池原理丶
注解原理丶注解原理丶序列化
Activity知识体系(Activity的生命周期丶Activity的任务栈丶Activity的启动模式丶View源码丶Fragment内核相关丶service原理等)
代码框架结构优化(数据结构丶排序算法丶设计模式)
APP性能优化(用户体验优化丶适配丶代码调优)
热修复丶热升级丶Hook技术丶IOC架构设计
NDK(c编程丶C++丶JNI丶LINUX)
如何提高开发效率?
MVC丶MVP丶MVVM
微信小程序
Hybrid
Flutter
接下来是资料清单:(敲黑板!!!)
1.数据结构和算法
2.设计模式
3.全套体系化高级架构视频;七大主流技术模块,视频+源码+笔记
4.面试专题资料包(怎么能少了一份全面的面试题总结呢~)
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
试题总结呢~)
[外链图片转存中…(img-a8b76yDV-1713696721308)]
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
[外链图片转存中…(img-ALX2Z6qG-1713696721309)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!