2015-12-20 11 views
8

मैं इस तरह एक ही प्रभाव को प्राप्त करना चाहते हैं:एंड्रॉइड में नेविगेशन मेनू में एक सबलेवल कैसे बनाएं?

http://mmenu.frebsite.nl/

जब आप दस्तावेज़/ट्यूटोरियल/समर्थन पर क्लिक करें, मेनू sublevel मेनू के लिए जाना जाएगा। यह विस्तारणीय सूचीदृश्य नहीं है, न ही मूल मेनू शीर्षक के नीचे एक उपमेनू आइटम है।

मैं इस तरह नेविगेशन दृश्य का उपयोग कर मेनू बनाने की कोशिश की है:

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

समस्या है, यह sublevel जब मैं माता पिता के मेनू शीर्षक पर क्लिक करें जाना नहीं है। एंड्रॉइड में इसे कैसे प्राप्त करें? बहुत बहुत धन्यवाद

+0

क्या आपको कोई समाधान मिला है, मैं यह भी कोशिश कर रहा हूं, यदि आपने किया है, तो कृपया इसे एक बार साझा करें, आपकी प्रतिक्रिया के लिए उन्नत धन्यवाद .. –

उत्तर

7

मेरा मानना ​​है कि, मैं वांछित प्रभाव संग्रहीत किया गया।

एक रूट मेनू के रूप में (activity_main_drawer.xml) - (और वापस लाने के लिए काफी भी ऐसा ही), मैं प्रयोग किया जाता है इस:

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

:

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

यह एक सबमेनू() है 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; 
    } 
} 

मैं अपने ड्रॉपबॉक्स के लिए अपने परीक्षण परियोजना अपलोड कर दिया है - feel free to check it out

मुझे आशा है कि, यह मदद करता है

+0

क्या आपको कोई समाधान मिला है, मैं यह भी कोशिश कर रहा हूं, अगर आपने किया, तो कृपया इसे एक बार साझा करें , आपकी प्रतिक्रिया के लिए उन्नत धन्यवाद .. –

1

एक विचार था कि प्रत्येक मेनू आइटम को एक संक्रमण के साथ एक और टुकड़ा खोलना था। नीचे, नेविगेशन ड्रॉवर सिर्फ एक टुकड़े के अंदर एक सूचीदृश्य है? तो नवाइगेशन ड्रॉवर सूची के एडाप्टर से एक और टुकड़ा लॉन्च करें।

enter image description here

विचार के पीछे clear() मौजूदा मेनू करने के लिए है और inflateMenu फिर मेनू आइटम है, जो एक सबमेनू के लिए नेतृत्व चाहिए पर हर बार उपयोगकर्ता क्लिक:

0

अगर मुझे इस समस्या का सामना करना पड़ता है। तो मैं ऐप के लिए पूरे हेडर (पोशाक डिजाइन) नेविगेशन ड्रॉवर का उपयोग करूंगा। और विस्तारणीय सूची दृश्य या अन्य एनिमेटेड या अन्य नियंत्रण जोड़ें जो मेरी वास्तविक आवश्यकता है।

कस्टम नौसेना का उपयोग करने के फायदे। यह है कि हम डिजाइन और कार्यक्षमता को सेट कर सकते हैं जैसा हमें चाहिए। यदि मेनू की सरल सूची है तो बल्लेबाज दृष्टिकोण यह है कि डिफ़ॉल्ट नौसेना का उपयोग करें। डिजाइन समर्थन lib में परिभाषित के रूप में दराज।

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