Android ActionBar ActionProvider子菜单

Android ActionBar ActionProvider子菜单,第1张

概述我只是不能让ActionProvider显示一个子菜单,我不明白为什么.我的菜单在xml中定义:<?xmlversion="1.0"encoding="utf-8"?><menuxmlns:android="http://schemas.android.com/apkes/android"><itemandroid:id="@+id/dossier_menu"

我只是不能让ActionProvIDer显示一个子菜单,我不明白为什么.我的菜单在xml中定义:

<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID"><item        androID:ID="@+ID/dossIEr_menu"        androID:showAsAction="always"        androID:actionProvIDerClass="com.some.other.mockup.MActionProvIDer"></item></menu>

动作提供者类:

public class MActionProvIDer extends ActionProvIDer  {private static final String TAG = "MActionProvIDer";private static final int List_LENGTH = 3;private Context context;/** * Creates a new instance. * * @param context Context for accessing resources. */public MezzActionProvIDer(Context context) {    super(context);    this.context = context;}@OverrIDepublic VIEw onCreateActionVIEw() {    VIEw vIEw = VIEw.inflate(context, R.layout.action_layout, null);    //vIEw must be returned not tetxVIEw or just buttonVIEw    return vIEw;}@OverrIDepublic boolean hasSubMenu() {    Log.d(TAG, "hasSubMenu");    return true;}@OverrIDepublic boolean onPerformDefaultAction() {    Log.d(TAG, "onPerformDefaultAction");    return super.onPerformDefaultAction();}/**add submenu in code**/@OverrIDepublic voID onPrepareSubMenu(SubMenu subMenu) {    Log.d(TAG, "onPrepareSubMenu");    subMenu.clear();    subMenu.add(Menu.NONE, Menu.NONE, 1,"Mezz 1");    subMenu.add(Menu.NONE, Menu.NONE, 2, "Mezz 2");}}

和行动布局是:

<TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text="Mezz State ++"        androID:ID="@+ID/textVIEw"        androID:layout_alignParenttop="true"        androID:layout_centerHorizontal="true"        androID:layout_margin="4dp"/><ImageVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="@dimen/buttonHeight"        androID:src="@androID:drawable/ic_menu_add"        androID:layout_alignParentleft="true"        androID:ID="@+ID/img1"        androID:layout_below="@ID/textVIEw"/>

我尝试使用按钮而不是图像视图,甚至尝试将子菜单添加到xml中的菜单项,当我点击动作提供程序时它只是没有显示任何子菜单我无法弄清楚为什么.

谢谢

解决方法:

我在这里找到了答案:

Can’t display sub-menu for custom ActionProvider

问题是我的onCreateActionVIEw()方法不返回null.

所以感谢Jason Robinson的回答是:

@OverrIDepublic VIEw onCreateActionVIEw() {  VIEw vIEw = VIEw.inflate(context, R.layout.action_layout, null);  final PopupMenu menu = new PopupMenu(mContext, vIEw);  menu.inflate(R.menu.submenu);  menu.setonMenuItemClickListener(this);  vIEw.setonClickListener(new OnClickListener() {    @OverrIDe    public voID onClick(VIEw v){        menu.show();    }  });return vIEw;}

和submenu.xml包含:

<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID">    <item            androID:ID="@+ID/mezzSub1"            androID:title="Mezz 1"            androID:showAsAction="always"></item>    <item            androID:ID="@+ID/mezzSub2"            androID:title="Mezz 2"            androID:showAsAction="always"></item></menu>
总结

以上是内存溢出为你收集整理的Android ActionBar ActionProvider子菜单全部内容,希望文章能够帮你解决Android ActionBar ActionProvider子菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1117879.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存