返回介绍

一、概述

发布于 2024-12-23 21:21:14 字数 1734 浏览 0 评论 0 收藏 0

NavigationView 属于 android_design_supprot_library 库的控件,主要是为了帮助大家去更加的方便的实现 material design 风格的 app。

为了更好去对源码分析就行理解,首先我们这里简单贴一下用法:

其效果一般为:

用法也非常简单,只需要在布局文件中声明即可:

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

<!-- your content layout -->

<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>

其一般和 DrawerLayout 配合使用,作为左侧的菜单布局,这里我们主要关注 NavigationView 的声明。

对应效果图和布局文件的声明,可以看出其布局主要分为 header 和 menu 两部分,在布局文件的声明中也可以得到体现,header 对应一个布局文库,menu 则对应一个菜单的 xml 文件。

ok,简单回顾完成用法以后,我们在分析源码前,先考虑一下,对于这样的 UI 效果,如果没有 NavigationView ,我们如何去做,很简单的,我们想到使用:

  • ListView 去实现 NavigationView 所对应的效果

的确是可以的,header 作为 addHeaderView,menu 则对应 item 数据项即可。当然既然能用 ListView ,那么肯定也可以使用 RecyclerView ,是的,为了更好的去理解源码分析,这里需要指出

  • 其实 NavigationView 内部就是通过 RecyclerView 实现的(针对目前分析版本)

在早一点的版本,例如 22.2.0 ,其内部是 ListView 实现的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文