मैं पहले आइटम के ऊपर और अंतिम आइटम के बाद डिवाइडर चाहता था। @ निलेश समाधान का उपयोग करते हुए मुझे डमी मेनू आइटम जोड़ना पड़ा और झूठे को सक्षम करना पड़ा जो वास्तव में गंदा लगा। प्लस क्या होगा अगर मैं अपने मेनू में अन्य शांत सामान करना चाहता हूं?
मैंने देखा कि नेवीगेशन व्यू फ्रेमलैट को बढ़ाता है ताकि आप अपनी सामग्री उसमें डाल सकें जैसे आप फ्रेमलेयआउट के लिए करेंगे। मैंने तब एक खाली मेनू xml सेट किया ताकि यह केवल मेरे कस्टम लेआउट को दिखाए। मैं समझता हूं कि यह संभवतः उस पथ के विरुद्ध है जिसे Google हमें लेना चाहता है लेकिन यदि आप वास्तव में कस्टम मेनू चाहते हैं तो यह एक आसान तरीका है।
<!--Note: NavigationView extends FrameLayout so we can put whatever we want in it.-->
<!--I don't set headerLayout since we can now put that in our custom content view-->
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:menu="@menu/empty_menu">
<!--CUSTOM CONTENT-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- CUSTOM HEADER -->
<include
android:id="@+id/vNavigationViewHeader"
layout="@layout/navigation_view_header"/>
<!--CUSTOM MENU-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@+id/vNavigationViewHeader">
<View style="@style/NavigationViewLineSeperator"/>
<Button android:text="Option 1"/>
<View style="@style/NavigationViewLineSeperator"/>
<Button android:text="Option 2"/>
<View style="@style/NavigationViewLineSeperator"/>
</LinearLayout>
</RelativeLayout>
</android.support.design.widget.NavigationView>
यहाँ शैली है
<style name="NavigationViewLineSeperator">
<item name="android:background">@drawable/line_seperator</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
</style>
और आकर्षित करने योग्य
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<size android:width="100sp"
android:height="1sp" />
</shape>
और मेनू
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
संपादित करें:
बटन के बजाय आप ड्रा करने योग्य टेक्स्ट टेक्स्ट का उपयोग कर सकते हैं जो मूल मेनू आइटम की नकल करते हैं:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/menu_support"
android:drawableLeft="@drawable/menu_icon_support"
style="@style/MainMenuText" />
// style.xml
<style name="MainMenuText">
<item name="android:drawablePadding">12dp</item>
<item name="android:padding">10dp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">#fff</item>
</style>