6

Yeni Android Tasarım Navigasyon Çekmecesini kullanıyorum. Çekmeceye bir anahtar eklemek istiyorum. Bunu uygulamak için bir şey var mı?Android Design Navigation Drawer - Nav xml'de bir anahtar nasıl eklenir?

<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:menu="@menu/activity_main_drawer" /> 
:

<Switch 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Switch" 
     android:id="@+id/switch1" 
     android:layout_gravity="center_horizontal" /> 

Şu anda varsayılan düzenini kullanıyorum: Bir <item> anahtarı olmak nasıl değişebileceği

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group 
     android:id="@+id/nav_view_menu_group_1" 
     android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_view_menu_item_myschedule" 
      android:icon="@drawable/ic_navview_my_schedule" 
      android:title="@string/navview_menu_item_myschedule" 
      android:titleCondensed="@string/navview_menu_item_myschedule" /> 
     <item 
      android:id="@+id/nav_view_menu_item_iolive" 
      android:icon="@drawable/ic_navview_play_circle_fill" 
      android:title="@string/navview_menu_item_iolive" 
      android:titleCondensed="@string/navview_menu_item_iolive" 
      android:visible="false"/> 
     <item 
      android:id="@+id/nav_view_menu_item_explore" 
      android:icon="@drawable/ic_navview_explore" 
      android:title="@string/navview_menu_item_explore" 
      android:titleCondensed="@string/navview_menu_item_explore" /> 
     <item 
      android:id="@+id/nav_view_menu_item_map" 
      android:icon="@drawable/ic_navview_map" 
      android:title="@string/navview_menu_item_map" 
      android:titleCondensed="@string/navview_menu_item_map" 
      android:visible="false"/> 
    </group> 

</menu> 

:

bu

menü xml olduğunu

Sadece bu görüntünün altında Android'e bildir. Bu, bu resimdeki gibi Android bildirim altındadır. http://i.stack.imgur.com/M9nD7.png enter image description here

Gerçekten herhangi bir geri bildirimi takdir ediyorum. Teşekkür ederim.

+0

Özel düzeni denediniz mi? – Mohit

+0

Şimdi ne kullanıyorsunuz, DrawerLayout? Veya başkalarını? – starkshang

+0

kullanıyorum – Joolah

cevap

1

Biz şu arada ben menuItem üzerinde setActionView kullanmak olacaktır Bunu yapmanın bulduk

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 

    //Get a reference to your item by id 
    MenuItem item = menu.findItem(R.id.menu_pick_color); 

    //Here, you get access to the view of your item, in this case, the layout of the item has a FrameLayout as root view but you can change it to whatever you use 
    FrameLayout rootView = (FrameLayout)item.getActionView(); 

    //Then you access to your control by finding it in the rootView 
    YourControlClass control = (YourControlClass) rootView.findViewById(R.id.control_id); 

    //And from here you can do whatever you want with your control 

    return true; 
} 
3

Tek yön yapabiliriz İstediğiniz:

mNavigationView.getMenu().findItem(R.id.nav_connect) 
      .setActionView(new Switch(this)); 

    // To set whether switch is on/off use: 
    ((Switch) mNavigationView.getMenu().findItem(R.id.nav_connect).getActionView()).setChecked(true); 

Muhtemelen bir tık dinleyici istiyorum Anahtarın durumunu değiştirmek için ayrıca:

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 

      switch (menuItem.getItemId()) { 
       case R.id.nav_connect: 
        ((Switch) menuItem.getActionView()).toggle(); 
        return true; 
      } 
     } 
    } 

Denemedim ama Muhtemelen android:actionLayout="@layout/switch_layout"'u xml'de kullanabilir ve oluşturduğunuz özel bir düzene işaret edebilirsin.

Ayrıca biraz daha sağlamlık sunabilecek bir ActionProvider kullanmayı deneyebilirsiniz. Yine de bu yöntemi denemedim.

İlgili konular