ฉันต้องการวงเวียนด้านบนรายการแรกและหลังรายการสุดท้าย การใช้โซลูชัน @Nilesh ฉันต้องเพิ่มรายการเมนูจำลองและเปิดใช้งานการตั้งค่าเป็นเท็จซึ่งรู้สึกสกปรกจริงๆ นอกจากนี้หากฉันต้องการทำสิ่งดีๆอื่น ๆ ในเมนูของฉัน
ฉันสังเกตว่า NavigationView ขยาย FrameLayout เพื่อให้คุณสามารถใส่เนื้อหาของคุณเองลงไปในมันเหมือนที่คุณทำกับ FrameLayout ฉันตั้งค่าเมนูว่าง 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>
และ drawable
<?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 พร้อม drawable ซึ่งเลียนแบบรายการเมนูต้นฉบับที่มีลักษณะ:
<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>