多个弹出菜单

3
我想在两个按钮上使用弹出菜单。 我现在的方法是制作两个不同的xml文件popup_menu1.xml和popup_menu2.xml,分别为每个按钮button1和button2充气。 Popup-menu-1有两个菜单项,而popup-menu-2有四个菜单项。 附加了图片以提供更多说明。 popup_menu1.xml有两个菜单项,是一个独立的xml文件, popup_menu2.xml有四个菜单项,也是一个独立的xml文件,
每个文件都为各自的按钮进行充气。
我的问题是:我是否可以仅使用(充气)一个xml文件,而不是为两个按钮制作两个不同的xml文件,并显示两个不同的弹出菜单?
感谢任何帮助。
谢谢!
P.S:我想添加图片以提供更清晰的解释,但由于我是新会员,他们不允许我这样做。
代码已添加: popup_menu1:File1
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu001">
  <group android:id="@+id/group_popupmenu">
      <item android:id="@+id/menu1"
          android:title="Today's Date"/>
      <item android:id="@+id/menu2"
          android:title="Custom Date"/>
  </group>
</menu>

弹出菜单2: 文件2

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu002">
  <group android:id="@+id/group_popupmenu">
      <item android:id="@+id/menu1"
          android:title="Last Seven (07) Days"/>
      <item android:id="@+id/menu2"
          android:title="Today"/>
      <item android:id="@+id/menu003"
          android:title="Yesterday"/>
      <item android:id="@+id/menu4"
          android:title="Last Twenty Eight (28) Days"/>
  </group>
</menu>

编辑版本1:

在活动类中的代码:

// add a click listener to the first button
startDateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
    PopupMenu popup = new PopupMenu (CampaignDetailsActivity.this, view);
    popup.getMenuInflater().inflate(R.layout.popup_menu_01, popup.getMenu());
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    public boolean onMenuItemClick(MenuItem item) {

        switch(item.getItemId()){
    case R.id.menu1:
    // some code here
    case R.id.menu2:
    // some code here   
        }
    return true;
    });
 popup.show();
 }
});

// add a click listener to the end date button
endDateButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View button) {
    PopupMenu popup = new PopupMenu (TestAdlikelyButtonsAndMenuActivity.this, button);
            popup.getMenuInflater().inflate(R.layout.popup_menu2, popup.getMenu());

            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId()){
                    case R.id.menu1:
                    // some code here
                    case R.id.menu2:
                    // some code here
                    case R.id.menu003:
                    // some code here
                    case R.id.menu4:
                    // some code here
                    }
                    return true;
                }
            });
        popup.show();
    }
});

图片:

在此输入图片描述

在此输入图片描述


解决图片问题的方法是将您的图片发布到外部网站,然后提供链接。 - Bo.
@Ahmad Bilal:你可以分享Java代码,我可以得到一些想法。 - KMI
@alextsc:为什么你将“Android”从标题中移除了? - Ahmad Bilal
1
@AhmadBilal 这是重复信息(你已经有一个安卓标签了),当你浏览安卓问题列表时,这非常令人烦恼。它看起来像“安卓-问题1”,“安卓-问题2”,“安卓|问题3”等等。基本上,这只会减慢解析问题列表的速度,没有任何好处。标签应该只在标题中自然地适合才包含在内。 - user658042
@DarshanComputing:是的,这可能有点奇怪。我只是想看看是否有实现它的选项。谢谢。 - Ahmad Bilal
显示剩余5条评论
1个回答

1

是的,您可以多次填充单个XML文件,但在您提供的示例中,通过拥有两个XML文件来正确执行此操作。在填充后,但在调用PopupMenu.show()之前,您可以使用Menu.add()的一种变体将项目添加到Menu(由PopupMenu.getMenu()返回的那个)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接