1

Support Library Features页面所述;在V4支持库加入了DrawerLayout增加了导航抽屉支持和设计支持库通过添加NavigationView(作为除此之外,它还具有作为一个依赖的DrawerLayout)增加了导航抽屉支持。支持库与设计库的导航抽屉

有很多教程介绍如何仅使用v4支持库来创建导航抽屉。 Google page on Navigation Drawer

由于设计支持库增加了对API级别7的支持,因此创建导航抽屉的建议和首选方法是什么。差异在哪里?有设计差异吗?

+0

对于初学者来说,这是一个非常好的问题。:) – Mohsen

回答

1

创建导航 抽屉的建议和首选方法是什么。差异在哪里?有设计差异吗?

其实,这些都没有什么大的differences.for例如,作为Google医生说:

http://developer.android.com/training/implementing-navigation/nav-drawer.html

例如,下面的布局采用了DrawerLayout与两个子 意见:一个FrameLayout包含主要内容(在运行时由 片段填充)和一个列表查看导航抽屉

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 

但在Support Library,您可以轻松地当然NavigationView标准材料设计指南这样实现的:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <!--Contents like Coordinator Layout--> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:headerLayout="@layout/header" 
     app:menu="@menu/drawer" /> 
    <!--Here is the Drawer menu--> 

</android.support.v4.widget.DrawerLayout> 

在这种情况下,我们使用app:menu="@menu/drawer"与一个简单易行的方法来实现这一点,并在上述代码中,他们使用<ListView

就是这样。

+0

因此,设计库只是添加一个'NavigationView'作为附加元素而不是'FrameLayout'和'ListView'?就这样? –

+1

添加'NavigationView'而不是'ListView'.and而不是'FrameLayout',你可以使用'CoordinatorLayout',这取决于你的期望(你可以像'MaterialDesign'指南那样做)。检查支持库的这些链接: http://android-developers.blogspot.com/2015/05/android-design-support-library.html – Mohsen

1

NavigationView代表您的应用的标准导航菜单,它遵循Material Guidelines

NavigationView通常放置在 a DrawerLayout内。

当然,您可以在DrawerLayout内使用您最喜欢的布局。

有关更多信息NavigationViewhere

+2

所以,如果我遵循材料指南,我最好用'NavigationView',因为它已经支持它,但是如果我想建立不同的东西,我会用自定义的'FrameLayout'和'ListView'(我必须使用'DrawerLayout'在两种方式)。 –