android - Android - 什么是布局管理器?
问题描述
我见过许多类型的布局管理器,例如:
LineraLayoutManager
RecyclerView.LayoutManager
ListViewLayoutManager
- ETC
实际上LayoutManager
是什么,为什么使用它,有哪些不同类型的LayoutManager
s?在android中,所有的UI组件,比如,Button
等等都有自己的吗?TextView
EditText
LayoutManagers
解决方案
适配器只负责创建和管理项目的视图(称为 ViewHolder),这些类不决定这些视图在显示时如何排列。相反,它们依赖于一个名为 LayoutManager 的单独类。
LayoutManager 是一个告诉适配器如何排列这些项目的类。例如,您可能希望这些项目从上到下放在单行中,或者您可能希望它们排列在像画廊这样的网格中。不是在适配器中编写此逻辑,而是在 LayoutManager 中编写并将该 LayoutManager 传递给 View (RecyclerView)。
初学者可能会问,为什么会这样?
答:灵活性。通过使用这种模式,每当您想更改项目的排列方式时,您都不必修改 Adapters 或 RecyclerView。此外,如果没有这种方法,您将受限于预构建类提供的功能。您可以通过扩展 LayoutManager 类来构建自己的 LayoutManager。
里面还有一些常用的 LayoutManager 供大家使用,我就列举两个
- LinearLayoutManager 根据方向将项目排列在 1 列或 1 行中。例如,水平 LinearLayoutManager 会将项目从左到右放置在 1 行中。
- GridLayoutManager 在提供的行数和列数中排列项目,就像画廊中的图像一样。
推荐阅读
- docker - 在 docker 容器中运行 asp.net 核心应用程序时如何摆脱 Microsoft.AspNetCore.DataProtection 警告
- php - 从 php-Enablex.io API 身份验证不使用提供的 API 密钥发送短信
- .net - 沙盒 AppDomain 中的堆栈跟踪中缺少文件名和行号
- amazon-mws - 亚马逊卖家 API:获取订单:多个开发人员应用程序
- angular - 如何将 ngx-datatable 的一整行作为链接?
- python - Getting "Requested runtime is not available for this stack (heroku-20)." error with correct versions of Python
- string - 我如何使用 if 函数来验证索引计数是真还是假?
- javascript - 转换字符串数组时保留引号
- javascript - 归档器生成的 Zip 文件在使用 fs-extra 复制后损坏
- python - Python pandas 总计和小计