Tôi muốn chia trên mục đầu tiên và sau mục cuối cùng. Sử dụng giải pháp @Nilesh, tôi đã phải thêm các mục menu giả và đặt kích hoạt thành false mà cảm thấy thực sự bẩn. Cộng với những gì nếu tôi muốn làm những thứ tuyệt vời khác trong menu của tôi?
Tôi nhận thấy NavigationView mở rộng FrameLayout để bạn có thể đặt nội dung của riêng bạn vào đó giống như bạn làm cho FrameLayout. Sau đó tôi đặt một menu trống xml để nó chỉ hiển thị bố cục tùy chỉnh của tôi. Tôi hiểu rằng điều này có thể đi ngược lại con đường Google muốn chúng tôi thực hiện nhưng nếu bạn muốn có một menu thực sự tùy chỉnh thì đây là một cách dễ dàng để làm điều đó.
<!--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>
Đây là phong cách
<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>
Và có thể vẽ
<?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>
Và thực đơn
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
biên tập:
Thay vì các Nút, bạn có thể sử dụng TextView với drawable để mô phỏng các mục menu ban đầu trông:
<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>