android GridLayout

 

結構html

繼承關係java

public class GridLayout extends ViewGroupandroid

java.lang.Object算法

android.view.View佈局

android.view.ViewGroupspa

android.widget.GridLayoutcode


該佈局把子視圖存放在一個矩形網格中。orm

網格是由被無數虛細線分割成多個單元格的可視區域組成。貫穿整個API的網格線經過網格索引數來指定。一個N列的網格在運行中包含0N N+1個索引,無論怎麼配置GridLayout 網格索引0是固定網格容器的前邊距,索引N是固定容器的後邊距(考慮後填充)。htm

行和列的規格繼承

rowSpeccolumnSpec佈局參數的定義後,子視圖佔用一個或者多個連續單元格,每一個規範是定義被佔用的行或列的設置和子視圖在單元格是如何對齊。儘管各個單元格在一個GridLayout中不重疊,GridLayout沒有阻止子視圖被定義爲佔據相同的單元格或者單元格組。然而在這種狀況下,也不能保證子視圖在佈局操做完成後本身不會重疊。

默認單元格分配

若是一個子視圖沒有指定佔據的行和列索引,GridLayout會自動指定單元格位置,包括:方向,行數和列數的屬性。

空間(Place)

子視圖之間的空間可能會經過使用專用的空間視圖的實例,或經過設置leftMargintopMarginrightMarginbottomMargin佈局參數後指定。當設置爲useDefaultMargins屬性,根據當前平臺的用戶界面風格,子視圖周圍的默認邊距將自動分配。每一個被定義的邊距可經過分配到相應的佈局參數來獨立覆蓋。默認值一般在不一樣組成部分會產生一個合理的間距,但在不一樣平臺版本之間可能會改變。

多餘的空間分佈

GridLayout的多餘的空間分佈是基於優先級,而不是根據比例。

一個子視圖的的伸展程度經過其行和列的組的對其屬性推算(這是典型的設置子視圖的佈局參數gravity屬性)。若是對齊是沿着給定的軸定義,那麼該組件在這個方向具備靈活性。若是沒有對齊,相反組件會缺少靈活性。

多個組件在同一行或列組被認爲平行的。若是組中全部在內的組件是靈活的,那麼這個小組是靈活的。位置在一個共同的邊界兩側的行和列組,反而認爲採起同一系列。若是複合組的一個元素是靈活的,則這個複合組是靈活的。

爲了使一列伸展,確保全部的組件,它裏面定義一個的gravity屬性。爲了防止從列伸展,確保列中的組成部分之一沒有定義的gravity屬性。

靈活性的原則並不能徹底的消除歧義,推薦GridLayout中的算法更接近其右側和底邊的行和列。

侷限性

GridLayout的不提供支持空間(weight)分配的原則,空間分配界定。在通常狀況下,能夠配置一個GridLayout多餘的空間分佈在多個行或列之間的不相同的比例。

一些常見的適用狀況,以下:將等量的周圍空間中的一個組成部分單元格組;使用居中對齊(或gravity屬性)。對於徹底控制對或列中多餘的空間分佈;使用的LinearLayout子視圖約束相關的單元格組的組成部分。當使用這些技術,記住,單元格組可能定義重疊。

GridLayout的使用佈局參數的完整描述GridLayout.LayoutParams

XML屬性

屬性名稱

描述

android:alignmentMode

當設置alignMargins,使視圖的外邊界之間進行校準,定義其邊距,當設置alignBounds,使視圖的邊界之間進行校準,默認設置alignMargins

常量

備註

alignBounds

0

對齊子視圖邊界。

alignMargins

1

對齊子視圖邊距。

android:columnCount

自動定位子視圖時建立的最大列數

android:columnOrderPreserved

當設置爲true,使列邊界顯示的順序和列索引的順序相同。默認是true

android:orientation

Orientation屬性在佈局時候不被使用,它僅當子視圖佈局參數沒有指定的時候分配行和列,GridLayout在這種狀況下和LinearLayout使用方法同樣,根據標誌的值將全部組件放在單個行或者放在當個列中。在水平狀況下,當一行的全部列都填充滿時,columnCount屬性額外提供建立新行。一樣在垂直狀況下,rowCount屬性有相同的做用,默認是水平的。

常量

備註

horizontal

0

定義水平部件。

vertical

1

定義垂直部件。

android:rowCount

自動定位子視圖時建立的最大行數

android:rowOrderPreserved

當設置爲true,使行邊界顯示的順序和行索引的順序相同。默認是true

android:useDefaultMargins

當設置ture,當沒有指定視圖的佈局參數時,告訴GridLayout使用默認的邊距。默認值是false

常量

類型

屬性名稱

描述

int

ALIGN_BOUNDS

這是alignmentMode的常量,當alignmentMode設置成ALIGN_BOUNDS,每一個組件之間的原始視圖邊界邊距對齊:即組件的區域經過下面分隔:頂部,左側,底部和右側的屬性。默認值:0

int

ALIGN_MARGINS

這是alignmentMode的常量。當alignmentMode設置ALIGN_MARGINS,每一個視圖的邊界向外延伸,根據他們的邊距,產生的矩形邊距對齊。默認值:1

int

HORIZONTAL

水平方向。默認值:0

int

UNDEFINED

常數用於表示一個不肯定的值。該字段可使用這個值來表示他們的值觀還沒有肯定。一樣的方法能夠返回這個值,代表沒有能實現返回的合適值,該常數的值(目前MIN_VALUE)是爲了不可能不知道其標誌的有效值之間的混淆。

int

VERTICAL

垂直方向。默認值:1

字段

public static final GridLayout.Alignment

屬性名稱

描述

BASELINE

表示一個視圖應該和在同一單元格組的其餘視圖基線對齊,這個常量僅用作rowSpecs對齊

BOTTOM

表示一個視圖應該和在同一單元格組的其餘視圖底部邊距對齊。

CENTER

表示一個視圖應該和在同一單元格組的其餘視圖居中對齊,此常數可用於rowSpecscolumnSpecs

FILL

表示視圖應該擴大以填充其單元格組。此常數可用於rowSpecscolumnSpecs

LEFT

表示一個視圖應該和在同一單元格組的其餘視圖左邊距對齊。

RIGHTT

表示一個視圖應該和在同一單元格組的其餘視圖右邊距對齊。

TOP

表示一個視圖應該和在同一單元格組的其餘視圖上邊距對齊。

公共方法

public GridLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

在提供的屬性集基礎上返回一個新的佈局參數設置。

參數

attrs 建立佈局參數的屬性

返回值

ViewGroup.LayoutParams實例或者他的派生實例

public int getAlignmentMode ()

返回對齊方式.

相關XML屬性

android:alignmentMode

返回值

對齊方式; ALIGN_BOUNDS 或者 ALIGN_MARGINS

參見

ALIGN_BOUNDS

ALIGN_MARGINS

setAlignmentMode(int)

public int getColumnCount ()

返回當前的列數。經過 setColumnCountint)方法最後一次設置的值,若是沒有這樣的值被設置,返回在columnSpec定義中的每個上限的最大值。

相關XML屬性

android:columnCount

返回值

當前的列數

參見

setColumnCount(int)

columnSpec

public int getOrientation ()

返回當前方向。

相關XML屬性

android:orientation

返回值

HORIZONTAL 或者 VERTICAL

參見

setOrientation(int)

public int getRowCount ()

返回當前的行數。經過 setRowCountint)方法最後一次設置的值,若是沒有這樣的值被設置,返回在rowSpec定義中的每個上限的最大值。

相關XML

android:rowCount

返回值

返回當前的行數。

參見

setRowCount(int)

rowSpec

public boolean getUseDefaultMargins ()

返回是否GridLayout分配時候,沒有相應佈局參數定義的默認邊距

相關XML屬性

android:useDefaultMargins

返回值

若是分配默認的邊距返回ture

參見

setUseDefaultMargins(boolean)

public boolean isColumnOrderPreserved ()

返回是否經過表格索引順序定製列邊界。

相關XML屬性

android:columnOrderPreserved

返回值

若是列邊界按照索引的順序顯示返回ture,不然返回false

參見

setColumnOrderPreserved(boolean)

public boolean isRowOrderPreserved ()

返回是否經過表格索引順序定製行邊界

相關XML屬性

android:rowOrderPreserved

返回值

若是行邊界按照索引順序顯示返回ture,不然返回false

參見

setRowOrderPreserved(boolean)

public void requestLayout ()

當無效的視圖佈局發生變化時候調用它,將經過視圖樹進行佈局傳遞。

public void setAlignmentMode (int alignmentMode)

設置該容器中全部子視圖之間的對齊方式

默認的值是ALIGN_MARGINS.

相關XML屬性

android:alignmentMode

參數

alignmentMode ALIGN_BOUNDS 或者 ALIGN_MARGINS

參見

ALIGN_BOUNDS

ALIGN_MARGINS

getAlignmentMode()

public void setColumnCount (int columnCount)

列數是僅用於當沒有一個佈局參數指定時候,生成默認的列/行索引。

相關XML屬性

android:columnCount

參數

columnCount 列的數量.

參見

getColumnCount()

columnSpec

public void setColumnOrderPreserved (boolean columnOrderPreserved)

當此屬性爲trueGridLayout的是被迫使他們相關的網格指數在視圖中以升序順序放置列的邊界。

當此屬性是falseGridLayout是放置在任何最適合給定的約束水平列邊界的順序。

此屬性的默認值是true

相關XML屬性

android:columnOrderPreserved

參數

columnOrderPreserved ture是被迫使他們相關的網格指數在視圖中以升序順序放置列的邊界。

參見

isColumnOrderPreserved()

public void setOrientation (int orientation)

Orientation是僅用於當沒有一個佈局參數指定時候,生成默認的列/行索引

默認的屬性值是HORIZONTAL

相關XML屬性

android:orientation

參數

orientation HORIZONTAL 或者 VERTICAL

參見

getOrientation()

public void setRowCount (int rowCount)

RowCount是僅用於當沒有一個佈局參數指定時候,生成默認的列/行索引

相關XML屬性

android:rowCount

參數

rowCount 行數

參見

getRowCount()

rowSpec

public void setRowOrderPreserved (boolean rowOrderPreserved)

當此屬性爲trueGridLayout是強制他們相關的網格指數在視圖中以升序順序放置行的邊界。

當此屬性是falseGridLayout是放置在任何最適合給定的約束水平行邊界的順序。

此屬性的默認值是true

相關XML屬性

android:rowOrderPreserved

參數

rowOrderPreserved ture是強制他們相關的網格指數在視圖中以升序順序放置列的邊界。

參見

isRowOrderPreserved ()

public void setUseDefaultMargins (boolean useDefaultMargins)

當設置爲true GridLayout根據子視圖的的視覺特徵分配在子視圖周圍的默認邊距,每一個定義的邊距,可獨立分配到相應的佈局參數覆蓋。

若是爲false,全部邊距的默認值是零。

當設置爲true時,考慮設置的alignmentMode屬性值ALIGN_BOUNDS

此屬性的默認值是false

相關XML屬性

android:useDefaultMargins

參數

useDefaultMargins 使用true分配默認的邊距

參見

getUseDefaultMargins()

setAlignmentMode(int)

public static GridLayout.Spec spec (int start, GridLayout.Alignment alignment)

返回一個Spec其中:

l spec.span = [start, start + 1]

l spec.alignment = alignment

參數

start the 開始索引

alignment 對齊方式

public static GridLayout.Spec spec (int start, int size)

返回一個Spec,其中:

l spec.span = [start, start + size]

參數

start 開始位置

size 大小

public static GridLayout.Spec spec (int start, int size, GridLayout.Alignment alignment)

返回一個Spec,其中:

l spec.span = [start, start + size]

l spec.alignment = alignment

參數

start 開始位置

size 大小

alignment 對齊方式

public static GridLayout.Spec spec (int start)

返回一個Spec,其中:

l spec.span = [start, start + 1]

參數

start 開始索引

保護方法

protected GridLayout.LayoutParams generateDefaultLayoutParams ()

返回一組默認佈局參數。沒有設置佈局參數執行addviewView)時,這些參數被請求時返回null,並拋出一個異常。

返回值

一組默認佈局參數或者null

protected GridLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

返回一組合法的受支持的佈局參數。當一個ViewGroup傳遞一個佈局參數沒有經過checkLayoutParams(android.view.ViewGroup.LayoutParams)檢測的視圖時,此方法被調用。此方法會返回一組新的適合當前ViewGroup的佈局參數,可能從指定的一組佈局參數中複製適當的屬性。

參數

p 被轉換成一組適合當前 ViewGroup的佈局參數.

返回值

一個ViewGroup.LayoutParams的實例或者其中的一個子節點


補充

文章精選

Android 4.0新增SpaceGridLayout初談

 ☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

相關文章
相關標籤/搜索