編輯: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類定義使用最常見的對齊方式,在總體布局上,左,下,右,居中,基線,填充。
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
實現定時器有很多種方式,在這裡我簡單的介紹幾種方式 (1)使用Handler + Runnable的方式 代碼如下: Handler handler = new
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個