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://img-blog.csdnimg.cn/img_convert/d00ba48e0e8f6f8c7470ceb26ec121ed.png)
3. 将menu点击事件绑定到actionmenuview中
![5777390-fe5ceb90f264f075.png](https://img-blog.csdnimg.cn/img_convert/237ddad5afb4471b2f4f2ece355ea398.png)
4. 为menu编写具体的展示xml文件
![5777390-458efa5814d6d8d8.png](https://img-blog.csdnimg.cn/img_convert/8d3ecaa1efd823375fcdd708d4eee896.png)
![5777390-556eb09c27ad037b.png](https://img-blog.csdnimg.cn/img_convert/67acda0c47bd769b74d79d60bc0d64d0.png)
![5777390-144ada6df92603f3.png](https://img-blog.csdnimg.cn/img_convert/b825d26d24130f586088b7aa1d018c5e.png)
运行效果如下:
![5777390-552420cbf7c36ecd.png](https://img-blog.csdnimg.cn/img_convert/a98d136aff08a95304d1141ccee8d096.png)
5. 为menu添加图标
![5777390-a6f077eae1c40cb7.png](https://img-blog.csdnimg.cn/img_convert/f8ddeafc65d38d978111d20ccff96a4d.png)
运行效果:(发现依然是无法展示出icon的)
![5777390-779cbd9dab0bf0ce.png](https://img-blog.csdnimg.cn/img_convert/762bb7aa9097797fd31fefaa8ab980ea.png)
做出如下的修改,即可
![5777390-9721c06cdf24a509.png](https://img-blog.csdnimg.cn/img_convert/97f68ffea326f9e615d48ed9e747bf7c.png)
运行效果如下:
![5777390-5f5cd511a424b84d.png](https://img-blog.csdnimg.cn/img_convert/a6a3a0973e8ea129548a85d7b6705903.png)
6. 改变menu的外形
注意:给Toolbar设置的popupTheme,对于Actionmenuview不太起作用了。想想也是,现在的Actionmenuview取代了Toolbar原先管理的那个Menu,而且相对独立,不受Toolbar约束;这样Actionmenuview可以显示在Toolbar的任意位置,但同时Toolbar的popupTheme也对Actionmenuview不起作用了。所以我就直接给actionmenuview设置theme控制弹窗的主题,控制它的样式为白底黑字 (尝试过给ActionMenuView设置popupTheme,但是不起作用)
![5777390-e07b9f95c5d3db88.png](https://img-blog.csdnimg.cn/img_convert/d981dde3b72c09af09c4acb131beab30.png)
自定义后的效果如下:
![5777390-0493b0684fcbb91a.png](https://img-blog.csdnimg.cn/img_convert/7c43dbc363b73e5fda1b96acb12d44d1.png)
Menu
默认的系统级别的widget,默认就出现在右上角。无法像ActionMenuView一样改变显示位置。
1. 创建menu文件并且书写xml文件
![5777390-2784c7d6a378fdfc.png](https://img-blog.csdnimg.cn/img_convert/2027b1d669de20d4a3d5e9b55729740b.png)
2. 在布局文件中的toolbar定义theme,这样就可以改变系统menu的样式了
![5777390-3572be813c544325.png](https://img-blog.csdnimg.cn/img_convert/6114151c9604e60f4669c160134e4054.png)
![5777390-d6a9eed664a0a4e4.png](https://img-blog.csdnimg.cn/img_convert/c6f0127b8894cd4a6ed41eff720383c1.png)
3. 代码中创建并且关联点击事件
![5777390-195a59489cd7d969.png](https://img-blog.csdnimg.cn/img_convert/469e2f3e2d22d092f3165e5f0d175c8f.png)
最终的显示效果如下:
![5777390-2222b64f609961f3.png](https://img-blog.csdnimg.cn/img_convert/9cbf2a49da0b75724da96076921d27f5.png)
链接: 提取码: qv2s