Почему открывается всплывающее меню внутри панели действий

Я работаю над приложением расписания, но у меня странная проблема: я создал всплывающее меню, которое открывается при нажатии на элемент панели действий.

Всплывающее окно работает, но открывается внутри панели действий, я хочу, чтобы оно открывалось в представлении ниже.

введите описание изображения здесь

Мой код ..

    @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>

person Richard Lindhout    schedule 21.06.2013    source источник
comment
Вы можете показать нам свой xml-макет?   -  person Borys    schedule 21.06.2013


Ответы (2)


Да, теперь это исправлено!

Неправильно использовать showPopupMenu (this.getView ());

Это должен быть идентификатор значка на панели действий .. как показано ниже ..

 @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) в

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


              }

Теперь это работает! Спасибо за ответы, это мне не помогло, но мы ценим это!

person Richard Lindhout    schedule 25.06.2013

Вы раздуваете свой макет меню, и я думаю, что вы хотите раздуть макет своей деятельности.

проверьте этот предыдущий вопрос, который показывает, как раздуть макет:

Как раздуть одно представление с помощью макета

person Alex Cabrera    schedule 21.06.2013