6

Korzystam z nowej szuflady nawigacyjnej do projektowania na Androida. Chcę dodać przełącznik w szufladzie. Czy jest gdzieś do realizacji tego?Szuflada nawigacji z projektowaniem w systemie Android - jak dodać przełącznik w nav xml?

to xml menu:

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

Jak mogę zmienić jeden <item> być przełącznik:

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

Obecnie używam standardowego układu:

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

Po prostu podoba mi się ten obraz pod Powiadomieniem Androida http://i.stack.imgur.com/M9nD7.png enter image description here

Naprawdę doceniam każdą opinię. Dziękuję Ci.

+0

Czy próbowałeś niestandardowego układu? – Mohit

+0

Czego używasz teraz, DrawerLayout? Lub innych? – starkshang

+0

Używam Joolah

Odpowiedz

1

Możemy zrobić to w następujący sposób

@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

Jednym sposobem znalazłem w ten sposób byłoby użyć setActionView na MENUITEM chcesz:

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

Prawdopodobnie chcą kliknij słuchacza a także zmienić stan Switcha:

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

Nie próbowałem, ale yo Prawdopodobnie użyjesz android:actionLayout="@layout/switch_layout" w xml i wskażesz niestandardowy układ, który utworzyłeś.

Można również spróbować użyć modelu ActionProvider, który może oferować trochę więcej niezawodności. Jednak nie próbowałem tej metody.

Powiązane problemy