Toolbar 不为人知的助手,ActionMenuView
2016-11-25 09:32
106 查看
原创 技术鸟
2016-11-24 15:10
封面图来自这次长滩岛旅行。第一次出国,感受颇深,绝不是一言两语能够描述的。只有亲自体验过,才能懂得当初女教师辞职信里的那句瞬间爆红的话:“世界那么大,我想去看看。”
不久前,对
平时我们在使用
第一个,大家知道,
第二个,动态添加或者删除 Menu Item ,又该如何实现呢?当然,你也能使用
以上两个应用场景比较特殊,但也不是没有出现的可能。如果你知道
再在
至于 Menu Item 的点击事件方法
还可以利用
mHomeAmv.getMenu().clear();
getMenuInflater().inflate(R.menu.search, mSearchAmv.getMenu());
现在有这样一个需求,设计图如下 ( 图片来源:stack overflow ) :
就可以利用
第一,Menu Item 间距问题。Item 默认的宽度是56dp ,可以利用 style 中的属性修改,并将样式设置给 Activity 主题即可,比如:
第二,Menu Item 图标高亮问题。当然,你可以使用两套图标,在点击时修改设置。但使用一套图标也能做到,还能减少 APK 文件大小,比如:
介绍完毕,这些知识点已补充至博客
本文为头条号作者原创。未经授权,不得转载。
2016-11-24 15:10
封面图来自这次长滩岛旅行。第一次出国,感受颇深,绝不是一言两语能够描述的。只有亲自体验过,才能懂得当初女教师辞职信里的那句瞬间爆红的话:“世界那么大,我想去看看。”
不久前,对
Toolbar控件的使用写了一篇总结性的文章:Android Toolbar,你想知道的都在这里了,本文应该算是一个补充完善吧,将
ActionMenuView的使用加入其中。
平时我们在使用
Toolbar的时候,很少会用到
ActionMenuView这个控件。虽然用起来很简单,但是很多伙伴并不知道他的存在,因为他的使用场景确实少见,我所能列举的也只有两个:
第一个,大家知道,
Toolbar默认将 Menu 内容摆放在右边,空间不足时溢出到 OverFlow 窗口中。比如现在有个需求,要将 Menu 的位置摆放在左边,也就是与
Title相邻的右边,那该如何控制呢?
第二个,动态添加或者删除 Menu Item ,又该如何实现呢?当然,你也能使用
visible属性来控制,但很显然,这不是一个很好的解决方案。
以上两个应用场景比较特殊,但也不是没有出现的可能。如果你知道
ActionMenuView的存在的话,处理起来就很得心应手。
ActionMenuView是将原本位于
Toolbar或者
ActionBar中的 Menu 内容移到自己的名下,以
ViewGroup的姿态将一些列的 Menu Item 囊括其中,再将自己搁置于
Toolbar容器中,这样,更方便于管理和呈现 Menu 内容。所以,原本孤立的
Toolbar控件,就有了一个 Child,代码如下:
再在
Activity文件中,将 Menu 资源文件加载到使用
findViewById()方法获取到的
ActionMenuView对象中:
至于 Menu Item 的点击事件方法
onOptionsItemSelected无需改动,只要将
ActionMenuView对象的点击事件设置转移即可:
还可以利用
getMenu()方法获取到 Menu 对象,动态添加或删除 Menu Item,甚至加载另外一个 Menu 资源文件,比如:
mHomeAmv.getMenu().clear();
getMenuInflater().inflate(R.menu.search, mSearchAmv.getMenu());
现在有这样一个需求,设计图如下 ( 图片来源:stack overflow ) :
就可以利用
ActionMenuView控制 Menu Item 的位置了。当然,这里面还需要另外几个知识点,顺便补充说明一下。
第一,Menu Item 间距问题。Item 默认的宽度是56dp ,可以利用 style 中的属性修改,并将样式设置给 Activity 主题即可,比如:
第二,Menu Item 图标高亮问题。当然,你可以使用两套图标,在点击时修改设置。但使用一套图标也能做到,还能减少 APK 文件大小,比如:
介绍完毕,这些知识点已补充至博客
Toolbar一文中,想了解更多工具栏知识,可以查看作者博文。另外,今天是「感恩节」(每年11月份第四个星期四),感谢生命中每一个与我相识或不曾相识的人,是你们让我的生命更加丰富多彩,让我不曾后悔走过的每一步路,向着阳光,一点一点稳稳前行!
本文为头条号作者原创。未经授权,不得转载。
相关文章推荐
- 快速掌握 Toolbar、ActionMenuView
- ActionMenuView的使用
- Android Custom View---Floating Action Button Menu
- actionViewClass使用 menuItem.getActionView() MenuItemCompat.getActionView() 返回null
- Android AppCompatActivity的ActionBar之SearchView、ShareActionProvider以及menu
- Android7.0中文API -- ActionMenuView
- Android7.0中文文档(API)-- ActionMenuView.LayoutParams
- MenuItemCompat.getActionView(item)返回null
- Android CircularFloatingActionMenu在ScrollView这样的滚动View中使用(2)
- Android7.0中文文档(API) -- ActionMenuView.OnMenuItemClickListener
- Android CircularFloatingActionMenu在ScrollView这样的滚动View中使用(2)
- actionbarsherlock+viewpage+fragment menu not display at first time
- Android 4.0笔记——ActionMenuItemView长按反馈的实现
- android设置toolbar的menu itemTextView颜色 set toolbar menu item text color
- Toolbar改变Action Menu Item 的文字颜色
- 控制QT中MainWindow上Menu和ToolBar的上下文菜单Action列表
- Android AppCompatActivity的ActionBar之SearchView、ShareActionProvider以及menu
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
- Actionbar&Toolbar 自定义Menu 布局--ActionProvider的使用
- Android之debug---menu的getActionView()return null