Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中文API(141) —— GridLayout

Android中文API(141) —— GridLayout

編輯:Android開發實例

前言

  本章內容android.widget.GridLayout章節,版本為Android 4.0 r1(新增),翻譯來自:"獨鍆躌踄"。

GridLayout

譯者署名:獨鍆躌踄

譯者鏈接:http://www.cnblogs.com/mxgsa/

版本:Android 4.0 r1

 

結構

繼承關系

public class GridLayout extends ViewGroup

        

java.lang.Object

android.view.View

         android.view.ViewGroup

                   android.widget.GridLayout

 

類概述

 (轉自文章精選1)

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

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

 

行和列的規格

在rowSpec和columnSpec布局參數的定義後,子視圖占用一個或者多個連續單元格,每個規范是定義被占用的行或列的設置和子視圖在單元格是如何對齊。盡管各個單元格在一個GridLayout中不重疊,GridLayout並沒有阻止子視圖被定義為占據相同的單元格或者單元格組。然而在這種情況下,也不能保證子視圖在布局操作完成後自己不會重疊。

 

默認單元格分配

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

 

空間(Place)

子視圖之間的空間可能會通過使用專用的空間視圖的實例,或通過設置leftMargin,topMargin,rightMargin和bottomMargin布局參數後指定。當設置為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

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

FILL

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

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 ()

返回當前的列數。通過 setColumnCount(int)方法最後一次設置的值,如果沒有這樣的值被設置,返回在columnSpec定義中的每一個上限的最大值。

相關XML屬性

android:columnCount

返回值

當前的列數

參見

setColumnCount(int)

columnSpec

 

public int getOrientation ()

返回當前方向。

相關XML屬性

android:orientation

         返回值

 HORIZONTAL 或者 VERTICAL

參見

setOrientation(int)

 

public int getRowCount ()

返回當前的行數。通過 setRowCount(int)方法最後一次設置的值,如果沒有這樣的值被設置,返回在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)

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

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

此屬性的默認值是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)

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

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

此屬性的默認值是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,其中:

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

*   spec.alignment = alignment

參數

start         the           開始索引

alignment         對齊方式

 

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

返回一個Spec,其中:

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

參數

start                   開始位置

size          大小

 

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

返回一個Spec,其中:

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

*   spec.alignment = alignment

參數

start                            開始位置

size                     大小

alignment         對齊方式

 

public static GridLayout.Spec spec (int start)

返回一個Spec,其中:

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

參數

start                            開始索引

 

保護方法

protected GridLayout.LayoutParams generateDefaultLayoutParams ()

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

返回值

一組默認布局參數或者null

 

protected GridLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

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

參數

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

返回值

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

 

補充

         文章精選

                   Android 4.0新增Space及GridLayout初談


GridLayout.Alignment

譯者署名:獨鍆躌踄

譯者鏈接:http://www.cnblogs.com/mxgsa/

版本:Android 4.0 r1

 

結構

繼承關系

public static abstract class GridLayout.Alignment extends Object

        

java.lang.Object

android.widget.GridLayout.Alignment  

 

類概述

對齊指定視圖應放置在一個單元格組的某個位置以及尺寸大小。

GridLayout.LayoutParams類包含一個rowSpec和columnSpec,其中每個都包含對齊。整體單元格組由這兩種沿每個軸單獨對齊的方式指定。

GridLayout類定義使用最常見的對齊方式,在總體布局上,左,下,右,居中,基線,填充。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved