ActionMenuView
简介
Toolbar 默认将 Menu 内容显示在右边,ActionMenuView 是将原本位于 Toolbar 或者 ActionBar 中的 Menu 内容移到自己的名下,以 ViewGroup 的姿态将一系列的 Menu Item 囊括其中,再将自己搁置于 Toolbar 容器中,这样,更方便于管理和呈现 Menu 内容。和传统的Menu不同的地方在于
基本使用
1. app.build添加v7依赖 (正常用Toolbar时就导入了_)
compile 'com.android.support:appcompat-v7:25.3.1'
2. xml中引用actionmenuview
![5777390-cc199f4f2bd2b919.png](https://i-blog.csdnimg.cn/blog_migrate/0ba6ee8fcfdeedd07043fcbe1ca65218.png)
3. 将menu点击事件绑定到actionmenuview中
![5777390-fe5ceb90f264f075.png](https://i-blog.csdnimg.cn/blog_migrate/8951ff32eb7741f1efbfbdf28c69fd8d.png)
4. 为menu编写具体的展示xml文件
![5777390-458efa5814d6d8d8.png](https://i-blog.csdnimg.cn/blog_migrate/b6d3ab3dbd7f8b77156098a21c4beb7a.png)
![5777390-556eb09c27ad037b.png](https://i-blog.csdnimg.cn/blog_migrate/179de135a2b69a49b576b53c530d9a70.png)
![5777390-144ada6df92603f3.png](https://i-blog.csdnimg.cn/blog_migrate/707404c5f6a122ec6bc563eeafd16f85.png)
运行效果如下:
![5777390-552420cbf7c36ecd.png](https://i-blog.csdnimg.cn/blog_migrate/a5b8117f9e6726b3da1f90adc127449d.png)
5. 为menu添加图标
![5777390-a6f077eae1c40cb7.png](https://i-blog.csdnimg.cn/blog_migrate/7bf6022ae07d2f00d1a41468fc50815d.png)
运行效果:(发现依然是无法展示出icon的)
![5777390-779cbd9dab0bf0ce.png](https://i-blog.csdnimg.cn/blog_migrate/6067e0798f77632a5b083b6913ac54b4.png)
做出如下的修改,即可
![5777390-9721c06cdf24a509.png](https://i-blog.csdnimg.cn/blog_migrate/4a4f29f1d2c76066a08315b0c2e62b2b.png)
运行效果如下:
![5777390-5f5cd511a424b84d.png](https://i-blog.csdnimg.cn/blog_migrate/08c838b1e42d0203e4a41ee14e96290e.png)
6. 改变menu的外形
注意:给Toolbar设置的popupTheme,对于Actionmenuview不太起作用了。想想也是,现在的Actionmenuview取代了Toolbar原先管理的那个Menu,而且相对独立,不受Toolbar约束;这样Actionmenuview可以显示在Toolbar的任意位置,但同时Toolbar的popupTheme也对Actionmenuview不起作用了。所以我就直接给actionmenuview设置theme控制弹窗的主题,控制它的样式为白底黑字 (尝试过给ActionMenuView设置popupTheme,但是不起作用)
![5777390-e07b9f95c5d3db88.png](https://i-blog.csdnimg.cn/blog_migrate/2e789937ac83a5a55980281f84549f26.png)
自定义后的效果如下:
![5777390-0493b0684fcbb91a.png](https://i-blog.csdnimg.cn/blog_migrate/3874f85b92025e2989b672f81508b17e.png)
Menu
默认的系统级别的widget,默认就出现在右上角。无法像ActionMenuView一样改变显示位置。
1. 创建menu文件并且书写xml文件
![5777390-2784c7d6a378fdfc.png](https://i-blog.csdnimg.cn/blog_migrate/9e5adc00d7375c9a8305b0202c305381.png)
2. 在布局文件中的toolbar定义theme,这样就可以改变系统menu的样式了
![5777390-3572be813c544325.png](https://i-blog.csdnimg.cn/blog_migrate/5228ef2c2bdd1da8239e0ea461b43150.png)
![5777390-d6a9eed664a0a4e4.png](https://i-blog.csdnimg.cn/blog_migrate/8af93e97419e476ed994722934994bc2.png)
3. 代码中创建并且关联点击事件
![5777390-195a59489cd7d969.png](https://i-blog.csdnimg.cn/blog_migrate/32f803b13ccb9fe05995dd1c6b18311b.png)
最终的显示效果如下:
![5777390-2222b64f609961f3.png](https://i-blog.csdnimg.cn/blog_migrate/56f9a728d84d0d78ce85ebe3413d72ea.png)
链接: 提取码: qv2s