多个弹出菜单

时间:2012-06-07 07:47:03

标签: android popupmenu

我想使用两(2)个按钮的弹出菜单。我现在实现它的方法是制作两个单独的xml文件popup_menu1.xml和popup_menu2.xml,它们分别为每个按钮,button1和button2充气。 Popup-menu-1有两(2)个菜单项,popup-menu-2有四(4)个菜单项。 添加图片以获得更多说明。

popup_menu1.xml有两个菜单项,一个单独的xml文件 popup_menu2.xml有四个菜单项,一个单独的xml文件

每个文件都为各个按钮充气。

我的问题是:我是否可以使用(充气)仅一(1)个xml文件,而不是两个单独的xml文件,用于两(2)个按钮并显示两(2)个不同popup_menus?

感谢任何帮助。

谢谢,

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>

popup_menu2:File2

<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();
    }
});

图片:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

是的,您可以多次为单个XML文件充气,但在您给出的示例中,您可以通过拥有两个XML文件来正确完成。在充气之后,但在致电PopupMenu.show()之前,您可以使用Menu.add()的一种变体将项目添加到Menu(由PopupMenu.getMenu()返回的项目)。