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相关推荐

  1. Android中导航栏之自定义导航布局

    Toolbar系列文章导航 Android中导航栏之Toolbar的使用 Android中导航栏之溢出菜单OverflowMenu Android中导航栏之搜索框SearchView Android中 ...

  2. Android中导航栏之搜索框SearchView

    Toolbar系列文章导航 Android中导航栏之Toolbar的使用 Android中导航栏之溢出菜单OverflowMenu Android中导航栏之搜索框SearchView Android中 ...

  3. 仿淘宝Android实现底部导航栏图标溢出效果-clipChildren属性

    1.clipChildren和clipPadding说明 clipChildren用来定义他的子控件是否要在他应有的边界内进行绘制. 默认情况下,clipChild被设置为true. 也就是不允许进行 ...

  4. 转载:Android底部导航栏,三种风格和实现

    原文出处 标题:Android底部导航栏,三种风格和实现 作者:阿飞__ 原文链接:Android底部导航栏,三种风格和实现_阿飞__的博客-CSDN博客_android导航栏 一.效果图展示 如果动 ...

  5. Android底部导航栏的三种风格实现

    一.效果图展示 如果动图没有动的话,也可以看下面这个静态图 以下挨个分析每个的实现,这里只做简单的效果展示,大家可以基于目前代码做二次开发. 二.BottomNavigationView 这是 Goo ...

  6. CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单

     水平&垂直对齐 元素居中对齐 .center {margin: auto;width: 50%;border: 3px solid green;padding: 10px; } 文本居中对齐 ...

  7. Android底部导航栏切换页面填坑

    ** Android底部导航栏切换页面填坑 ** 这个效果的实现关键点就是给选项赋予两种状态,focused和normal,在主程序中用监听判断是否被选中,就给被选中的选项设focused为true, ...

  8. HTML字母导航栏怎么做,html导航栏下拉菜单怎么制作?这里有详细的代码实例

    本篇文章介绍了关于html导航栏下拉菜单的制作,文章一开始就给出了全部的导航栏下拉菜单的代码,没看懂的下面都有详细的解释.下面就让我们一起来看这篇文章吧 我们要说的是html导航栏下拉菜单的制作,先看 ...

  9. Android底部导航栏最常用的两种写法

    先来看看底部导航栏的效果 Android 底部导航栏有很多种写法,例如: RadioGroup , Tablayout, TabHost  , LinearLayout + ImageView + T ...

最新文章

  1. java中重载与重写的区别
  2. React Native系列(6) - 编译安卓私有React-Native代码
  3. Python学习笔记之函数式编程
  4. Quartz集成到 Spring
  5. Flask之flask-session
  6. 5G手机是否值得买?北京5G基站将超1.4万个
  7. No package 'glib-2.0' found
  8. powershell自动化操作AD域、Exchange邮箱系列(4)—批量导入邮箱/域账号(文件)
  9. 董淳光SQLITE3使用总结-转
  10. 干货 | 利用SPSS进行高级统计分析第二期
  11. VC++农历与公历转换
  12. 领导科学 读书笔记(一)
  13. python基础练习之【求三角形周长和面积】
  14. python eof是什么_python eof是什么
  15. 米兔机器人恐龙拼图手册_MI 小米 米兔积木机器人 履带版
  16. 业务范围(business area)
  17. 【通讯原理】Ch.4:数字信号调制
  18. guest additions
  19. GitLab服务器安装完成之后;瓦力系统的安装(之一)
  20. WGCNA算法研究笔记

热门文章

  1. BTC钱包(wallet.dat 文件密码与私钥的区别)
  2. 如何设置文件的默认打开方式
  3. Win10设置添加来宾账户的方法
  4. win0如何添加计算机用户,Win10系统如何添加来宾账户 win10添加来宾账户的方法
  5. 计算机画图怎样更改文字,如何在图片上改字|超简单的修改图片里文字方法
  6. 可以实现图片编辑修改文字app有哪些?这三款工具很实用
  7. 第六章 利用深度Q学习来实现最优控制的智能体
  8. 通过Htpp访问svn内容
  9. C# 委托、匿名委托、Lambda表达式详解
  10. Android移动拼图小游戏