Android中导航栏之溢出菜单OverflowMenu
Toolbar系列文章导航
Android中导航栏之Toolbar的使用
Android中导航栏之溢出菜单OverflowMenu
Android中导航栏之搜索框SearchView
Android中导航栏之自定义导航布局
Android中导航栏之标签导航暨TabLayout用法
上次我们说了关于Toolbar的使用,这次说一下溢出菜单的使用。什么是溢出菜单?说的简单点就是Toolbar右侧的图标集合。和之前讲过的上下文菜单差不多,不过这次多了一个showAsAction选项,所以咱们先列一下这个属性的可选值。
展示位置类型 | 说明 |
always | 总是在导航栏上显示菜单图标 |
ifRoom | 如果导航栏右侧有空间,该项就直接显示在导航栏上,不再放入溢出菜单 |
never | 从不在导航栏上直接显示,一直放在溢出菜单列表里 |
withText | 如果能在导航栏上显示,除了显示图标,还要显示该项的文字说明 |
collapseActionView | 操作视图要折叠为一个按钮,点击该按钮再展开操作视图,主要用于SearchView |
示例代码如下:
首先我们在res--menu包中创建一个menu_overflow.xml文件,其中代码如下
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto" ><itemandroid:id="@+id/menu_refresh"android:orderInCategory="1"android:icon="@mipmap/ic_refresh"app:showAsAction="never"android:title="刷新"/><itemandroid:id="@+id/menu_about"android:orderInCategory="8"android:icon="@mipmap/ic_about"app:showAsAction="never"android:title="关于"/><itemandroid:id="@+id/menu_quit"android:orderInCategory="9"android:icon="@mipmap/ic_quit"app:showAsAction="never"android:title="退出"/></menu>
接着我们在Activity中接着上次引入Toolbar后继续编写,加入如下代码
@Overridepublic boolean onMenuOpened(int featureId, Menu menu) {// 显示菜单项左侧的图标setOverflowIconVisible(featureId, menu);return super.onMenuOpened(featureId, menu);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// 从menu_overflow.xml中构建菜单界面布局getMenuInflater().inflate(R.menu.menu_overflow, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == android.R.id.home) { // 点击了工具栏左边的返回箭头finish();} else if (id == R.id.menu_refresh) { // 点击了刷新图标Toast.makeText(this,"刷新了",Toast.LENGTH_SHORT).show();return true;} else if (id == R.id.menu_about) { // 点击了关于菜单项Toast.makeText(this, "这个是工具栏的演示demo", Toast.LENGTH_LONG).show();return true;} else if (id == R.id.menu_quit) { // 点击了退出菜单项finish();}return super.onOptionsItemSelected(item);}// 显示OverflowMenu的Iconpublic static void setOverflowIconVisible(int featureId, Menu menu) {// ActionBar的featureId是8,Toolbar的featureId是108if (featureId % 100 == Window.FEATURE_ACTION_BAR && menu != null) {if (menu.getClass().getSimpleName().equals("MenuBuilder")) {try {// setOptionalIconsVisible是个隐藏方法,需要通过反射机制调用Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);m.setAccessible(true);m.invoke(menu, true);} catch (Exception e) {e.printStackTrace();}}}}
这样我们就可以实现溢出菜单的编写,点击事件都在onOptionsItemSelected方法中响应。
Android中导航栏之溢出菜单OverflowMenu相关推荐
- Android中导航栏之自定义导航布局
Toolbar系列文章导航 Android中导航栏之Toolbar的使用 Android中导航栏之溢出菜单OverflowMenu Android中导航栏之搜索框SearchView Android中 ...
- Android中导航栏之搜索框SearchView
Toolbar系列文章导航 Android中导航栏之Toolbar的使用 Android中导航栏之溢出菜单OverflowMenu Android中导航栏之搜索框SearchView Android中 ...
- 仿淘宝Android实现底部导航栏图标溢出效果-clipChildren属性
1.clipChildren和clipPadding说明 clipChildren用来定义他的子控件是否要在他应有的边界内进行绘制. 默认情况下,clipChild被设置为true. 也就是不允许进行 ...
- 转载:Android底部导航栏,三种风格和实现
原文出处 标题:Android底部导航栏,三种风格和实现 作者:阿飞__ 原文链接:Android底部导航栏,三种风格和实现_阿飞__的博客-CSDN博客_android导航栏 一.效果图展示 如果动 ...
- Android底部导航栏的三种风格实现
一.效果图展示 如果动图没有动的话,也可以看下面这个静态图 以下挨个分析每个的实现,这里只做简单的效果展示,大家可以基于目前代码做二次开发. 二.BottomNavigationView 这是 Goo ...
- CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
水平&垂直对齐 元素居中对齐 .center {margin: auto;width: 50%;border: 3px solid green;padding: 10px; } 文本居中对齐 ...
- Android底部导航栏切换页面填坑
** Android底部导航栏切换页面填坑 ** 这个效果的实现关键点就是给选项赋予两种状态,focused和normal,在主程序中用监听判断是否被选中,就给被选中的选项设focused为true, ...
- HTML字母导航栏怎么做,html导航栏下拉菜单怎么制作?这里有详细的代码实例
本篇文章介绍了关于html导航栏下拉菜单的制作,文章一开始就给出了全部的导航栏下拉菜单的代码,没看懂的下面都有详细的解释.下面就让我们一起来看这篇文章吧 我们要说的是html导航栏下拉菜单的制作,先看 ...
- Android底部导航栏最常用的两种写法
先来看看底部导航栏的效果 Android 底部导航栏有很多种写法,例如: RadioGroup , Tablayout, TabHost , LinearLayout + ImageView + T ...
最新文章
- java中重载与重写的区别
- React Native系列(6) - 编译安卓私有React-Native代码
- Python学习笔记之函数式编程
- Quartz集成到 Spring
- Flask之flask-session
- 5G手机是否值得买?北京5G基站将超1.4万个
- No package 'glib-2.0' found
- powershell自动化操作AD域、Exchange邮箱系列(4)—批量导入邮箱/域账号(文件)
- 董淳光SQLITE3使用总结-转
- 干货 | 利用SPSS进行高级统计分析第二期
- VC++农历与公历转换
- 领导科学 读书笔记(一)
- python基础练习之【求三角形周长和面积】
- python eof是什么_python eof是什么
- 米兔机器人恐龙拼图手册_MI 小米 米兔积木机器人 履带版
- 业务范围(business area)
- 【通讯原理】Ch.4:数字信号调制
- guest additions
- GitLab服务器安装完成之后;瓦力系统的安装(之一)
- WGCNA算法研究笔记