2015-06-18 8 views
60

поддержка дизайн библиотеки Android обеспечивают NavigationView:Android NavigationView группа меню делитель

<android.support.design.widget.NavigationView 
    ... 
    app:menu="@menu/navigation_drawer_items" /> 

меню/navigation_drawer_items:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <group android:checkableBehavior="single"> 
     <item .../> 
     ... 
    </group> 

    <group android:checkableBehavior="single"> 
     <item .../> 
     ... 
    </group> 

</menu> 

Как добавить разделитель, разделитель или пространство между группами (как на картинке)?

enter image description here

+0

добавить

[ваши вопросы] ... – Harry

ответ

172

Просто дает уникальный идентификатор для каждой группы. Он автоматически создаст разделитель.

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:id="@+id/group_feature" 
     android:checkableBehavior="single"> 
     <item android:id="@+id/navdrawer_item_map" 
      android:checked="true" 
      android:icon="@drawable/ic_drawer_map" 
      android:title="@string/navdrawer_item_map"/> 

    </group> 
    <group android:id="@+id/group_settings" 
     android:checkableBehavior="single"> 
     <item android:id="@+id/navdrawer_item_settings" 
      android:icon="@drawable/ic_drawer_settings" 
      android:title="@string/navdrawer_item_settings"/> 

    </group> 
</menu> 
+3

вы можете рассказать мне, как добавить цвет в эту строку –

+0

Это не работает, если у вас есть группы в разных файлах макета. – Whome

+1

@YaseenAhmad http://stackoverflow.com/a/30731387/3544839 chnge color – Moinkhan

12

вы делаете что-то вроде этого.

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_home" 
      android:icon="@drawable/ic_dashboard" 
      android:title="Home" /> 
     <item 
      android:id="@+id/nav_messages" 
      android:icon="@drawable/ic_event" 
      android:title="Messages" /> 
     <item 
      android:id="@+id/nav_friends" 
      android:icon="@drawable/ic_headset" 
      android:title="Friends" /> 
     <item 
      android:id="@+id/nav_discussion" 
      android:icon="@drawable/ic_forum" 
      android:title="Discussion" /> 
    </group> 

    <item android:title="Sub items"> 
     <menu> 
      <item 
       android:icon="@drawable/ic_dashboard" 
       android:title="Sub item 1" /> 
      <item 
       android:icon="@drawable/ic_forum" 
       android:title="Sub item 2" /> 
     </menu> 
    </item> 

</menu> 

этот код взят из примера приложения Design Library сделанного Chris Barnes https://github.com/chrisbanes/cheesesquare

+0

Ваше решение работает и его добавления субтитров, что приятно, но вопрос был только о сепараторе , Если я опускаю название, есть разделитель, но также место, где должно быть название. – Shaddow

+1

вам не нужен заголовок, все, что вам нужно сделать, это дать элементу идентификатор – tyczj

+0

@Shaddow посмотреть этот вопрос http://stackoverflow.com/questions/30790420/how-to-get-dividers-in-navigationview-menu- без заголовков # 30790420 – tyczj

9

Я использую это следующим образом:

<group 
     android:id="@+id/group1" 
     android:checkableBehavior="single"> 
     <item 
      android:id="@+id/menu1" 
      android:icon="@drawable/somedrawable" 
      android:title="Lorem ipsum" /> 
</group> 
<group 
     android:id="@+id/group2" 
     android:checkableBehavior="single"> 
     <item 
      android:id="@+id/menu2" 
      android:icon="@drawable/somedrawable" 
      android:title="Dolor it amet" /> 
</group> 

идентификаторы имеют важное значение (+ идентификатор/group1 и + идентификатор/group2). Без идентификаторов вы не увидите делителя. Он работает в моем приложении.

1

Вы можете добавить свой текст между <item android:title="title_name"> и </item>

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_display_image" 
      android:title="Load Image" 
      android:icon="@drawable/ic_menu_gallery" 
      app:showAsAction="always" 

      app:actionLayout="@layout/switch_nav_drawer"/> 
     <item 
      android:id="@+id/nav_camera" 
      android:icon="@drawable/ic_menu_camera" 
      android:title="Saved News" /> 
     <item 
      android:id="@+id/nav_gallery" 
      android:icon="@drawable/ic_menu_gallery" 
      android:title="Gallery" /> 
     <item 
      android:id="@+id/nav_slideshow" 
      android:icon="@drawable/ic_menu_slideshow" 
      android:title="Slideshow" /> 

    </group> 

    <item android:title="Settings"> 
     <menu> 
      <item 
       android:id="@+id/nav_manage" 
       android:icon="@drawable/ic_menu_manage" 
       android:title="Tools" /> 
     </menu> 
    </item> 

    <item 
     android:id="@+id/about_us" 
     android:icon="@drawable/ic_info_black_24dp" 
     android:title="About Us"></item> 


</menu> 
1

Делитель в NavigationMenuList достигается с помощью группировки пунктов меню, но убедитесь, что вы даете идентификатор группы @ + идентификатор, который необходим. Ниже работает код вы

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<group 
    android:id="@+id/gp_one" 
    android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_home" 
     android:icon="@drawable/ic_avatar" 
     android:title="Home" /> 
</group> 

<group 
    android:id="@+id/gp_two" 
    android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_account" 
     android:icon="@drawable/ic_avatar" 
     android:title="My Account" /> 
    <item 
     android:id="@+id/nav_orders" 
     android:icon="@drawable/ic_avatar" 
     android:title="My Orders" /> 
    <item 
     android:id="@+id/nav_wishlist" 
     android:icon="@drawable/ic_avatar" 
     android:title="My Wishlist" /> 
</group> 

<group 
    android:id="@+id/gp_three" 
    android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_rateus" 
     android:icon="@drawable/ic_avatar" 
     android:title="Rate Us" /> 
    <item 
     android:id="@+id/nav_share" 
     android:icon="@drawable/ic_avatar" 
     android:title="Share" /> 
    <item 
     android:id="@+id/nav_logout" 
     android:icon="@drawable/ic_avatar" 
     android:title="Logout" /> 
</group> 

+0

Для разделителя мы должны разделить их в отдельных группах? На самом деле я использую 'BottomNavigationView' –

Смежные вопросы