簡體   English   中英

Android - 什么是布局管理器?

[英]Android - What is Layout Manager?

我見過許多類型的布局管理器,例如:

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

究竟LayoutManager ,以及為什么使用它,什么是不同類型的LayoutManager S' 在 android 中,像ButtonTextViewEditText等所有 UI 組件都有自己的LayoutManagers嗎?

適配器只負責創建管理項目的視圖(稱為 ViewHolder),這些類不決定這些視圖在顯示時如何排列。 相反,它們依賴於一個名為 LayoutManager 的單獨類。

LayoutManager 是一個類,它告訴適配器如何安排這些項目 例如,您可能希望這些項目從上到下排成一行,或者您可能希望將它們排列在像畫廊這樣的網格中。 不是在您的適配器中編寫此邏輯,而是在 LayoutManager 中編寫它並將該 LayoutManager 傳遞給 View (RecyclerView)。

初學者可能會問,為什么它會這樣工作?
答:靈活性 通過使用這種模式,無論何時你想改變items的排列,你都不必修改Adapters或RecyclerView。 此外,如果沒有這種方法,您將受限於預構建類提供的功能。 您可以通過擴展 LayoutManager 類來構建自己的 LayoutManager。

還有一些常用的LayoutManagers供大家使用,我列舉兩個

  • LinearLayoutManager根據方向將項目排列在 1 列或 1 行中。 例如,水平 LinearLayoutManager 會將項目從左到右放置在 1 行中。
  • GridLayoutManager按照提供的行數和列數排列項目,就像畫廊中的圖像一樣。

LayoutManagerRecyclerView的內部類。 根據文檔LayoutManager及其子類負責測量和定位RecyclerView項目視圖

已知的直接子類

線性布局管理器、交錯網格布局管理器

已知的間接子類

GridLayoutManager、WearableLinearLayoutManager

所以LinearLayoutManager允許RecyclerView將數據顯示為列表,而GridLayoutManager允許在可滾動表/網格中組織項目。

回答您的第二個問題 - 不,其他組件通常沒有自己的LayoutManager ,但可能有一些例外。

LayoutManager負責在RecyclerView中測量和放置項目視圖,並確定何時回收用戶不再可見的項目視圖的策略。 通過更改LayoutManager,可以使用RecyclerView來實現標准的垂直滾動列表,統一網格,交錯網格,水平滾動集合等等。 提供了一些庫存布局管理器供一般使用。

如果LayoutManager指定默認的構造函數或帶有簽名的默認構造函數(Context,AttributeSet,int,int),則RecyclerView將在實例化時實例化並設置LayoutManager。 然后可以從getProperties(Context,AttributeSet,int,int)獲得最常用的屬性。 如果LayoutManager同時指定了兩個構造函數,則非默認構造函數將優先。

它的主要工作是管理適配器提供的大數據集的布局。 它將每個項目視圖放置在RecycleView中的適當位置。 此外,它還會重新使用用戶不再可見的視圖。 在此期間,它可能會要求適配器用與數據集不同的元素替換該視圖的內容。 以這種方式回收(或重用)視圖可以極大地提高性能,因為現在無需在其中創建額外的視圖並執行諸如findViewById()等昂貴的操作。 由於此功能,此窗口小部件被命名為RecyclerView(表示一個可重復使用視圖的窗口小部件)。

布局管理器使我們能夠通過確定容器內組件的大小和位置來控制可視組件在 GUI 表單中的排列方式。

GridLayout:它將所有組件排列在相同大小的單元格中,從左到右,從上到下添加它們。 一個單元中只能放置一個組件,並且網格的每個區域都將具有相同的大小。

LinearLayout:它將布局的所有組件排列在一個列/行中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM