Android向menuItem添加子菜单,addSubMenu()在哪里?
我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中。我检查了android sdk中的“MenuItem”,没有addSubMenu()方法!尽管你可以找到“hasSubMenu()”和“getSubMenu”。
正在考虑在 onCreateOptionsMenu 中执行此操作:
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem mi = menu.getItem(MYITEMID); // << this is defined in my XML optionsMenu
SubMenu subm = mi.addSubMenu(0,1,0,"Map 1"); // no addSubMenu() method!!!???
....
How do I create a submenu inside a menuitem in code?
I want to add a submenu inside my OptionsMenu to a menuItem, programatically according to my parameters. I've checked "MenuItem" in android sdk and there is no addSubMenu() method!, although you can find "hasSubMenu()" and "getSubMenu".
Was thinking on doing this in onCreateOptionsMenu:
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem mi = menu.getItem(MYITEMID); // << this is defined in my XML optionsMenu
SubMenu subm = mi.addSubMenu(0,1,0,"Map 1"); // no addSubMenu() method!!!???
....
How do I create a submenu inside a menuitem in code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
有时 Android 的怪异确实令人惊奇(而且有趣......)。我这样解决了这个问题:
a)在 XML 中定义一个子菜单占位符,如下所示:
b)在 OnCreateOptionsMenu 中获取子菜单项,清除它并添加我的子菜单项,如下所示:
Sometimes Android weirdness is really amazing (and amusing..). I solved it this way:
a) Define in XML a submenu placeholder like this:
b) Get sub menu item in OnCreateOptionsMenu, clear it and add my submenu items, like this:
我知道这是一个老问题,但我自己也遇到过这个问题。
最直接的方法似乎是简单地将项目本身指定为子菜单,然后添加到该项目。
例如:
I know this is an old question, but I just came across this problem myself.
The most straightforward way of doing this, seems to be to simply specify the item itself as a submenu, then add to this item.
E.g.:
这是一个完整的答案,它基于使用占位符的想法,但主要使用 xml 来添加子菜单。
如果您有一个类似 main_menu.xml 的菜单:
创建另一个菜单 sub_menu.xml ,它将在 my_menu_item 中使用:
在您的 onCreateOptionsMenu 中:
这个解决方案很好,因为充气器处理了大部分工作。
Here's a complete answer which builds on the idea of using a placeholder but uses mostly xml to add the submenu.
If you have a menu like so called main_menu.xml:
Create another menu sub_menu.xml which will be used in my_menu_item:
In your onCreateOptionsMenu:
This solution is nice since the inflater handles most of the work.
执行此操作的最佳方法是在 xml 菜单文件中。您可以通过在
item
内创建一个新的menu
对象来实现此目的:The best way to do this is in your xml menu file. You can do this by creating a new
menu
object inside of anitem
:为了提供 Phil 答案的综合示例,这里是我完整的工作 XML,该菜单包含两个选项,每个菜单都是一个包含三个选项的菜单。我打算在顶层添加第三个菜单......
To provide a comprehensive example of Phil's answer, here is my complete, working XML for a menu with two choices, each of which is a menu with three choices. I intend to add a third menu to the top level ...
您应该考虑使用 ActionProvider。
You should consider use a ActionProvider instead.
我只是在 xml 文件中创建子菜单,并在运行时从菜单对象获取子菜单(使用 findItem(id) 方法)并使用 submenu.setVisible(boolean) 在运行时添加/删除它。
I would just create the submenu in xml file, and in run time get the submenu from menu object, (using findItem(id) method) and use submenu.setVisible(boolean) to add/remove it on run time.