2016-12-20 14 views
0

この質問とその回答はどこにも表示されなかったので、私が見つけた方法を分かち合うことで少し貢献したかもしれないと考えました。それでは
Navigationviewメニュー項目にポップアップメニューを固定する

//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; 
    } 

、問題を:

は、だから、私は、ビューの形でそれのうちいずれかの項目を取得できませんでしたので、NavigationViewメニューへのPopupMenuオブジェクトを固定して、この問題を持っていました

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

がに固定するため何ものPopupMenuを残し、あらゆる種類のビューでない場合は基本的です。

答えて

0

だから私は、次のようにあなただけのメニュー項目内の空のビューを作成することができます考え出し: のみ、以下を含むレイアウトxmlファイルを作成します。

<?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" 
    /> 

は「view_empty」それを呼び出すことができます。すべてのことが残っているが、

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

をさて、次のようapp:actionLayout="@layout/drawer_empty"
マイアイテムが見えます:

は今のメニュー項目は、その項目に次の行を追加することにより、その中に含まれている空のビューのレイアウトを持っている必要がありますちょうどそれを使用して:

//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; 

What'dが今起こることのPopupMenuは、このように、それはのmenuItemがアンカーポイントであるコンテナのように見えるように、menuItemに内部の見えないビューに自分自身を固定だろうということです。

関連する問題