2015-12-20 13 views
8

私はこのように同じ効果を実現したいと思います:あなたは、ドキュメント/チュートリアル/サポートをクリックしたときアンドロイドのナビゲーションメニューでサブレベルを作成する方法は?

http://mmenu.frebsite.nl/

が、メニューはサブレベルメニューに移動します。展開可能なリストビューでも、親メニューのタイトルの下にあるサブメニュー項目でもありません。

私はこのようなナビゲーションビューを使用してメニューを作成しようとしている:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_home" 
      android:icon="@drawable/ic_event" 
      android:title="Home" /> 
     <item 
      android:id="@+id/nav_profile" 
      android:icon="@drawable/ic_dashboard" 
      android:title="Perfil" /> 
    </group> 

    <item android:title="More Options"> 
     <menu> 
      <item 
       android:icon="@drawable/ic_forum" 
       android:title="Forum" /> 
      <item 
       android:icon="@drawable/ic_headset" 
       android:title="Headset" /> 
     </menu> 
    </item> 
</menu> 

問題がある、私は親メニューのタイトルをクリックすると、それはサブレベルになりません。どのようにアンドロイドでそれを達成するには?ありがとうたくさん

+0

私もこれを試してみましたか?済んだら、一度共有してください。ありがとうございました。 –

答えて

7

私は信じて、私は望ましい効果をアーカイブ:

enter image description here

の背後にある考え方は、clear()既存のメニューにあるし、サブメニューにつながるはずのメニュー項目、上inflateMenuたびにユーザーのクリックを再。 (そして取り戻すに - ほとんど同じことを行う)

ルートメニュー(activity_main_drawer.xml)として、私はこれを使用:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/action_item1" 
      android:icon="@drawable/ic_menu_camera" 
      android:title="Item 1" /> 
     <item 
      android:id="@+id/action_expand" 
      android:icon="@drawable/ic_menu_gallery" 
      android:title="Sub Menu to expand" /> 
    </group> 
</menu> 

これは、サブメニュー()です:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:title="Go Back" 
     android:icon="@drawable/ic_back" 
     android:id="@+id/back_to_main"/> 

    <item 
     android:id="@+id/sub_item1" 
     android:icon="@drawable/ic_menu_share" 
     android:title="Subitem 1" /> 
    <item 
     android:id="@+id/sub_item2" 
     android:icon="@drawable/ic_menu_send" 
     android:title="Subitem 2" /> 
</menu> 

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" /> 

</android.support.v4.widget.DrawerLayout> 

そして、ここではMainActivityですクラス(スイッチングを行うもの):

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    NavigationView navigationView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ..... 
     navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.inflateMenu(R.menu.activity_main_drawer); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    .... 


    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.action_expand) { 
      navigationView.getMenu().clear(); 
      navigationView.inflateMenu(R.menu.activity_submenu_drawer); 
     } else if (id == R.id.back_to_main) { 
      navigationView.getMenu().clear(); 
      navigationView.inflateMenu(R.menu.activity_main_drawer); 
     } 

     return true; 
    } 
} 

私は私のDropboxに私のテストプロジェクトをアップロードしました - feel free to check it out

私は願って、それは

+0

解決策はありますか?私もこれを試していますか? 、あなたの応答のための高度なありがとう.. –

1

私が持っていた1つのアイデアは、各メニュー項目を遷移で別の断片を開くことでした。その下にあるナビゲーションドロワは、断片の中の単なるリストビューにすぎませんか?アダプターからナヴァライゼーション・ドロワー・リストの別のフラグメントを起動します。

0

はこれがあなた

助けることができるかもしれませ役立ちます

Sub menu menu sample

0

この問題が発生した場合。次に、私はアプリ全体のヘッダー(衣装設計された)ナビゲーションドロワーを使用します。私の実際の必要条件である拡張可能なリストビューやその他のアニメーションやその他のコントロールを追加します。

カスタムナビを使用する利点。必要に応じて設計と機能を設定できるということです。メニューの単純なリストの場合、バッターアプローチは、デフォルトのナビゲーションを使用しています。デザインサポートlibに定義されている引き出し。

関連する問題