2016-12-20 3 views
0

Da diese Frage und ihre Antwort nirgendwo auftauchte, dachte ich, ich könnte genauso gut etwas beitragen, indem ich die Art und Weise teile, die ich gefunden habe.

So hatte ich dieses Problem mit einem PopupMenu Objekt zu einem NavigationView Menü Verankerung, da ich keine Produkte aus ihm in Form einer Ansicht bekommen konnte:
Verankern eines PopupMenu zu Navigationsansicht Menüeinträge

//onCreate: 
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
     drawerMenu = navigationView.getMenu(); 


//onNavigationItemSelected(MenuItem menuItem): 
    switch (menuItem.getItemId()) { 
       case R.id.menubutton_submenuButton: 
        //the following line is merely how I'd imagine it should be 
        PopupMenu popupMenu = new PopupMenu(this, drawerMenu.findItem(R.id.menubutton_submenuButton)); 
        popupMenu.getMenuInflater().inflate(R.menu.sub_menu, popupMenu.getMenu()); 
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         @Override 
         public boolean onMenuItemClick(MenuItem item) { 
          //handle the inflated menu's buttons here 
          return true; 
         } 
        }); 
        popupMenu.show(); 
        break; 
    } 

dann also das Problem ist im Grunde wo

drawerMenu.findItem(R.id.menubutton_submenuButton)); 

ist keine Ansicht jeder Art, die das PopupMenu mit nichts zu verankern verlässt. So

Antwort

0

Ich dachte, Sie können nur einen leeren Blick in den Menüpunkt wie folgt erstellen: ein Layout XML-Datei erstellen, die nur das folgende:

<?xml version="1.0" encoding="utf-8"?> 
<View 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    /> 

nennen wir es „view_empty“.

Nun sollte der Menüpunkt haben, dass leere Ansicht Layout in der es enthalten, indem Sie die folgende Zeile in seinem Element hinzufügen: app:actionLayout="@layout/drawer_empty"
Mein Artikel sieht wie folgt aus:

<item 
       android:id="@+id/menubutton_submenuButton" 
       android:title="example menu item" 
       app:actionLayout="@layout/view_empty"/> 

Nun, alles, was übrig bleibt, ist nur um es mit:

//onNavigationItemSelected(MenuItem menuItem) { 
     switch (menuItem.getItemId()) { 
      case R.id.menubutton_submenuButton: 
       MenuItem item = drawerMenu.findItem(R.id.menubutton_submenuButton); 
       PopupMenu popupMenu = new PopupMenu(this, MenuItemCompat.getActionView(item)); 
       popupMenu.getMenuInflater().inflate(R.menu.sub_menu, popupMenu.getMenu()); 
       popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
        @Override 
        public boolean onMenuItemClick(MenuItem item) { 
         //handle the inflated menu's buttons here 
         return true; 
        } 
       }); 
       popupMenu.show(); 
       break; 

Was hat jetzt geschehen ist, dass die PopupMenu sich im Inneren des menuItem zu einer unsichtbaren Ansicht verankern würde, damit es wie der Behälter aussehen zu lassen menuItem ist der Ankerpunkt.

Verwandte Themen