【问题标题】:Navigation Drawer from support library vs. design library [duplicate]支持库与设计库中的导航抽屉[重复]
【发布时间】:2016-01-17 12:07:19
【问题描述】:

Support Library Features 页面所述; v4 支持库通过添加DrawerLayout 添加对导航抽屉的支持,设计支持库通过添加@添加对导航抽屉的支持987654324@(作为它作为依赖项的DrawerLayout 的补充)。

有许多教程如何仅使用 v4 支持库来创建导航抽屉,例如Google page on Navigation Drawer

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

【问题讨论】:

  • 对初学者来说真是个好问题。:)

标签: android navigation-drawer material-design android-support-library android-design-library


【解决方案1】:

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

实际上,这些并没有什么大的区别。例如,正如Google doc所说:

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

例如,下面的布局使用了一个带有两个孩子的 DrawerLayout 视图:包含主要内容的 FrameLayout(由 运行时的片段),以及一个用于导航抽屉的ListView

<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" 以一种简单易行的方式来实现这一点,在上面的代码中,他们使用了&lt;ListView

就是这样。

【讨论】:

  • 所以设计库只是添加了NavigationView作为附加元素,而不是FrameLayoutListView?就这些?
  • 添加NavigationView 而不是ListView。而不是FrameLayout,你可以使用CoordinatorLayout,这取决于你的期望(你可以像MaterialDesign 指南那样做)。检查此链接以获取支持库:android-developers.blogspot.com/2015/05/…
【解决方案2】:

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

NavigationView 通常放置在DrawerLayout中。

当然你可以在DrawerLayout中使用你喜欢的布局。

更多关于NavigationViewhere的信息。

【讨论】:

  • 所以如果我遵循材料指南,我最好使用NavigationView,因为它已经支持它,但是如果我想构建不同的东西,我会使用自定义的FrameLayoutListView (我必须同时使用DrawerLayout)。
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多