Android - 什么是布局管理器?

Android - What is Layout Manager?

我见过很多类型的布局管理器,例如:

  1. LineraLayoutManager
  2. RecyclerView.LayoutManager
  3. ListViewLayoutManager
  4. 等等

LayoutManager 实际上是什么,为什么要使用它,LayoutManager 有哪些不同类型?在 android 中执行所有 UI 组件,例如 ButtonTextViewEditText 等都有自己的 LayoutManagers?

LayoutManagerRecyclerView 的内部 class。根据文档 LayoutManager 及其子classes 负责测量和定位 RecyclerView 中的项目视图

Known direct subclasses

LinearLayoutManager, StaggeredGridLayoutManager

Known indirect subclasses

GridLayoutManager, WearableLinearLayoutManager

因此 LinearLayoutManager 允许 RecyclerView 将数据显示为列表,GridLayoutManager 允许在可滚动的 tables/grids.

中组织项目

回答你的第二个问题 - 不,其他组件通常没有自己的 LayoutManager,但可能会有一些例外。

适配器仅负责创建管理 项目视图(称为 ViewHolder),这些 class 不负责决定这些视图在显示时如何排列。相反,他们依赖于一个名为 LayoutManager 的单独 class。

LayoutManager 是一个class,它告诉 适配器如何排列这些项目。例如,您可能希望这些项目从上到下排在一行中,或者您可能希望将它们排列在像画廊这样的网格中。您无需在适配器中编写此逻辑,而是在 LayoutManager 中编写并将该 LayoutManager 传递给 View (RecyclerView)。

初学者可能会问,为什么会这样?
答案:灵活性。通过使用此模式,无论何时您想要更改项目的排列,都不必修改 Adapters 或 RecyclerView。此外,如果没有这种方法,您将只能使用 pre-built class 提供的功能。您可以通过扩展 LayoutManager class.

来构建自己的 LayoutManager

还有一些常用的LayoutManager供大家使用,我就列举其中的两个

  • 线性布局管理器 根据方向将项目排列在 1 列或 1 行中。例如,一个水平 LinearLayoutManager 将在 1 行中从左到右放置项目。
  • GridLayoutManager 在提供的行数和列数中排列项目,就像图库中的图像一样。

布局管理器使我们能够通过确定组件在容器中的大小和位置来控制可视组件在 GUI 表单中的排列方式。

GridLayout:它将所有组件排列在一个由相同大小的单元格组成的网格中,从左到右,从上到下添加它们。一个单元格中只能放置一个组件,并且网格的每个区域都具有相同的大小。

LinearLayout:它将布局的所有组件排列在一个 column/row。