6

मैं नए एंड्रॉइड डिजाइन नेविगेशन ड्रॉवर का उपयोग कर रहा हूं। मैं दराज में एक स्विच जोड़ना चाहता हूँ। क्या इसे लागू करने के लिए कोई दूर है?एंड्रॉइड डिज़ाइन नेविगेशन ड्रॉवर - एनवी एक्सएमएल में स्विच कैसे जोड़ें?

इस

मेनू एक्सएमएल है:

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

मैं वर्तमान में डिफ़ॉल्ट लेआउट का उपयोग कर रहा:

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

मैं एक <item> स्विच होने के लिए कैसे बदल सकता हूँ

बस की तरह Android सूचना के तहत इस छवि http://i.stack.imgur.com/M9nD7.png enter image description here

मैं वास्तव में किसी भी प्रतिक्रिया की सराहना। धन्यवाद।

+0

क्या आपने कस्टम लेआउट का प्रयास किया है? – Mohit

+0

अब आप क्या कर रहे हैं, DrawerLayout? या दूसरों? – starkshang

+0

मैं का उपयोग कर रहा हूं – Joolah

उत्तर

1

हम निम्नलिखित माध्यम से यह कर सकते हैं

@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

एक तरह से मैं यह कर रहा MENUITEM पर setActionView उपयोग करने के लिए किया जाएगा के पाया है आप चाहते हैं:

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

शायद एक क्लिक श्रोता चाहते साथ ही स्विच की स्थिति को बदलने के लिए:

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

मैंने कोशिश नहीं की है, लेकिन यो आप शायद एक्सएमएल में android:actionLayout="@layout/switch_layout" का उपयोग कर सकते हैं और आपके द्वारा बनाए गए कस्टम लेआउट पर इंगित कर सकते हैं।

भी ActionProvider का उपयोग करने का प्रयास कर सकता है जो थोड़ा अधिक मजबूती प्रदान कर सकता है। हालांकि मैंने इस विधि को आजमाया नहीं है।

संबंधित मुद्दे