【问题标题】:Why use DrawerLayout instead of a CoordinatorLayout behavior for NavigationView为什么为 NavigationView 使用 DrawerLayout 而不是 CoordinatorLayout 行为
【发布时间】:2019-03-02 14:33:20
【问题描述】:

我一直在研究 DrawerLayout 的实现,我开始想知道为什么 Android 支持库团队选择创建一个新布局而不是为 CoordinatorLayout 创建一个新的 Behavior 以放入 'NavigationView '。 SwipeRefreshLayout 也是如此。

他们决定以这种方式实施有什么特别的原因吗?

【问题讨论】:

    标签: android android-support-library android-design-library


    【解决方案1】:

    我记得 CoordinatorLayout 是后来介绍到 Drawer 布局的。根据我的知识和理解,引入了抽屉布局,默认情况下按照所有提到的设计指南将使用菜单文件的选项放到抽屉上。

    如果我们说 Coordinator 布局,它的主要工作是调整其中的其他 UI 组件,因为布局的任何 co-UI 组件发生了一些变化。

    所以如果你说在 Coordinator 布局中添加抽屉布局的行为,它就不适合 Coordinator 的布局工作。根据 UI,抽屉布局显示在主布局之外,即在协调器布局之外。此外,抽屉布局时没有任何调整因此它不能成为协调器布局的一部分。

    【讨论】:

    • “根据 UI,抽屉布局显示在主布局之外,即在协调器布局之外。” DrawerLayout 根本不是要显示的 UI,NavigationView 是一个 UI。当NavigationView 移动时,其他视图确实会得到调整。例如,工具栏图标可以动画化,因此在其中一个孩子(NavigationView)和另一个Toolbar 之间存在依赖关系。但是即使没有,也不需要依赖关系,它只是支持,实际上BottomSheetBehavior默认没有任何依赖关系。
    【解决方案2】:

    一切都表明使用DrawerLayout 代替CoordinatorLayout.Behavior 没有技术上的特殊原因。阅读它的实现几乎就像阅读一个 Behavior 实现。

    其实就是Side Sheets的实现,里面的样式基本上和抽屉一样的sheet,seems that it will be implemented as a Behavior,就像BottomSheetBehavior一样。

    CoordinatorLayout.Behavior 是在 24.1.0 版本中引入的,DrawerLayout 是在 22.1.0 版本中引入的,所以也许他们明白 DrawerLayout 可以被推广,但不想弃用它并在同一方面花费更多时间模式,但这只是一个猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2021-10-12
      相关资源
      最近更新 更多