【问题标题】:Why opens popupmenu inside action bar为什么在操作栏中打开弹出菜单
【发布时间】:2015-12-24 00:11:28
【问题描述】:

我正在开发一个时间表应用程序,但我遇到了一个奇怪的问题,我创建了一个弹出菜单,单击操作栏项目时会打开它。

弹出窗口有效,但它在在操作栏内打开,我希望它在下面的视图中打开。

我的代码..

    @Override
    public void onCreateOptionsMenu(
          Menu menu, MenuInflater inflater) {
       inflater.inflate(R.menu.lists_choice_mode_mulitplue, menu);
    }
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);

        }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
          // Handle item selection
          switch (item.getItemId()) {
          case R.id.inverse:
              showPopupMenu(this.getView());
              return true;
          }
          return false;
    }
     private void showPopupMenu(View v){
         final Activity activity = getSupportActivity();
           PopupMenu popupMenu = new PopupMenu(activity, v);
              popupMenu.getMenuInflater().inflate(R.menu.popup, popupMenu.getMenu());

              popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

           @Override
           public boolean onMenuItemClick(MenuItem item) {
            Toast.makeText(activity,
              item.toString(),
              Toast.LENGTH_LONG).show();
            return true;
           }
          });

              popupMenu.show();
          }

我的 .xml 布局文件

popup.xml

 <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android">
          <group android:id="@+id/group_popupmenu">
              <item android:id="@+id/menu1"
                  android:title="Popup menu item 1"/>
              <item android:id="@+id/menu2"
                  android:title="Popup menu item 2"/>
              <item android:id="@+id/menu3"
                  android:title="Popup menu item 3"/>
          </group>
        </menu>

我的操作栏按钮 .xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/inverse"
        android:showAsAction="always|withText"
        android:title="Week"
        android:titleCondensed="Week" />
</menu>

【问题讨论】:

  • 你能告诉我们你的 xml 布局吗?

标签: android actionbarsherlock popupmenu


【解决方案1】:

是的,现在已经修好了!

showPopupMenu(this.getView()); 是错误的

应该是action bar中icon的id..如下..

 @Override
         public boolean onOptionsItemSelected(MenuItem item) {
              // Handle item selection
              switch (item.getItemId()) {
              case R.id.inverse:

                  showPopupMenu(R.id.inverse);
                  return true;
              }
              return false;
        }

改变showpopupmenu(view v) in

 private void showPopupMenu(int id){

             final Activity activity = getSupportActivity();
             View v = activity.findViewById(id);
               PopupMenu popupMenu = new PopupMenu(activity, v);
                  popupMenu.getMenuInflater().inflate(R.menu.popup, popupMenu.getMenu());

                  popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

               @Override
               public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(activity,
                  item.toString(),
                  Toast.LENGTH_LONG).show();
                return true;
               }
              });


                      popupMenu.show();


              }

现在可以了!感谢您的回答,它对我没有帮助,但非常感谢!

【讨论】:

    【解决方案2】:

    你正在夸大你的菜单布局,我认为你想夸大你的活动布局。

    查看前面的问题,该问题显示了如何为布局充气:

    How to inflate one view with a layout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多