前言html
本章內容是android.widget.TableLayout,版本爲Android 3.0 r1,翻譯來自"cnmahj",歡迎你們訪問他的博客:http://android.toolib.net/blog/,再次感謝"cnmahj"!歡迎你一塊兒參與Android的中文翻譯,聯繫我over140@gmail.com。
java
聲明android
歡迎轉載,但請保留文章原始出處:)
安全
農民伯伯:http://over140.blog.51cto.com/ide
Android中文翻譯組: http://goo.gl/6vJQl
正文函數
1、結構佈局
public class TableLayout extends LinerLayout學習
java.lang.Object編碼
android.view.Viewspa
android.view.ViewGroup
android.widget.LinearLayout
android.widget.TableLayout
2、概述
按照行列來組織子視圖的佈局。表格佈局包含一系列的 TableRow
對象,用於定義行(實際上你也能夠使用其它子對象,將在後面進行解釋)。表格佈局不爲它的行、列和單元格顯示錶格線。每一個行能夠包含0個以上(包括0)的單元格; 每一個單元格能夠設置一個View
對象.與行包含不少單元格同樣, 表格包含不少列。表格的單元格能夠爲空.單元格能夠象 HTML 那樣跨列。
列的寬度由該列全部行中最寬的一個單元格決定.不過表格佈局能夠經過 setColumnShrinkable()
方法或者 setColumnStretchable()
方法來標記某些列能夠收縮或能夠拉伸. 若是標記爲能夠收縮,列寬能夠收縮以使表格適合容器的大小。若是標記爲能夠拉伸, 列寬能夠拉伸以佔用多餘的空間。表格的總寬度由其父容器決定. 記住列能夠同時具備可拉伸和可收縮標記是很重要的。在列能夠調整其寬度以佔用可用空間, 但不能超過限度時是頗有用的.最後,你能夠經過調用setColumnCollapsed()
方法來隱藏列。
表格佈局的子對象不能指定 layout_width
屬性.寬度永遠是 MATCH_PARENT
。不過子對象能夠定義 layout_height
屬性;其默認值是 WRAP_CONTENT
. 若是子對象是 TableRow
,其高度永遠是 WRAP_CONTENT
。
不管是在代碼仍是在 XML 佈局文件中,單元格必須安裝索引順序加入表格行. 列號是從 0 開始的.若是你不爲子單元格指定列號,其將自動增值,使用下一個可用列號. 若是你跳過某個列號,他在表格行中做爲空能夠改對待。參見 ApiDemos 中經過 XML 建立表格的佈局示例。
雖然表格佈局典型的子對象是表格行,實際上你能夠使用任何視圖類的子類, 做爲表格視圖的直接子對象.視圖會做爲只有一行並結合了全部列的單元格顯示。
參見
3、內部類
class TableLayout.LayoutParams
該類強制將子視圖的寬度設爲 MATCH_PARENT
, 將沒有設置高度的子視圖的高度設爲 WRAP_CONTENT
。
4、XML屬性
屬性名稱 |
描述 |
android:collapseColumns |
隱藏從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重複的設置將被忽略。 相關方法 |
android:shrinkColumns |
收縮從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重複的設置將被忽略。你能夠經過"*"代替收縮全部列。注意一列能同時表示收縮和拉伸。 相關方法 |
android:stretchColumns |
拉伸從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重複的設置將被忽略。你能夠經過"*"代替收縮全部列。注意一列能同時表示收縮和拉伸。 相關方法 |
5、構造函數
public TableLayout (Context context)
爲給定的上下文建立表格佈局。
參數
context 應用程序上下文
public TableLayout (Context context, AttributeSet attrs)
使用指定的屬性集合爲給定的上下文建立表格佈局。
參數
context 應用程序上下文
attrs 屬性集合
6、公共方法
public void addView (View child)
添加子視圖。若是子視圖沒有設置佈局參數,則使用視圖組(ViewGroup)的佈局參數爲該視圖佈局。
參數
child 添加的子視圖
public void addView (View child, int index)
添加子視圖。若是子視圖沒有設置佈局參數,則使用視圖組(ViewGroup)的佈局參數爲該視圖佈局。
參數
child 添加的子視圖
index 子視圖加入的位置索引
public void addView (View child, int index, ViewGroup.LayoutParams params)
用指定的佈局參數添加一個子視圖。
參數
child 添加的子視圖
index 子視圖加入的位置索引
params 爲子視圖指定得佈局參數
public void addView (View child, ViewGroup.LayoutParams params)
使用指定的佈局參數添加子視圖。
參數
child 添加的子視圖
params 設置到子視圖上的佈局參數
public TableLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
返回一組基於提供的屬性集合的佈局參數集合。
參數
attrs 用於生成佈局參數的屬性集
返回值
ViewGroup.LayoutParams
或其子類的實例
public boolean isColumnCollapsed (int columnIndex)
返回指定列的摺疊狀態。
參數
columnIndex 列索引
返回值
摺疊時爲true;不然爲false
public boolean isColumnShrinkable (int columnIndex)
返回指定的列是否可收縮。
參數
columnIndex 列索引
返回值
若是列能夠收縮,返回true;不然返回false
public boolean isColumnStretchable (int columnIndex)
返回指定的列是否可拉伸。
參數
columnIndex 列索引
返回值
若是列能夠拉伸,返回true;不然返回false
public boolean isShrinkAllColumns ()
指示是否全部的列都是可收縮的。
返回值
若是全部列均可收縮,返回true;不然返回false
public boolean isStretchAllColumns ()
指示是否全部的列都是可拉伸的。
返回值
若是全部列均可拉伸,返回true;不然返回false
public void requestLayout ()
當某些變動致使視圖的佈局失效時調用該方法。該方法按照視圖樹的順序調用。
public void setColumnCollapsed (int columnIndex, boolean isCollapsed)
摺疊或恢復給定列。摺疊時,列從屏幕上消失,其空間由其它列佔用。 當列屬於 TableRow
時才能夠進行摺疊/恢復操做。
調用該方法會請求佈局操做。
相關XML屬性
參數
columnIndex 列索引
isCollapsed 摺疊時爲true;不然爲false
public void setColumnShrinkable (int columnIndex, boolean isShrinkable)
設置指定列是否可收縮。當行太寬時,表格能夠收縮該列以提供更多空間。
調用該方法會請求佈局操做。
相關XML屬性
參數
columnIndex 列索引
isShrinkable 若是列能夠收縮,設爲真;不然設爲假。默認是假。
public void setColumnStretchable (int columnIndex, boolean isStretchable)
設置指定列是否可拉伸。可拉伸時,列會盡量多的佔用行中的可用空間。
調用該方法會請求佈局操做。
相關XML屬性
參數
columnIndex 列索引
isStretchable 若是列能夠拉伸,設爲真;不然設爲假.默認是假
public void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)
註冊當從視圖中添加或移除子視圖時發生的回調函數。
參數
listener 層次結構變動時執行的回調函數
public void setShrinkAllColumns (boolean shrinkAllColumns)
標記全部列爲可收縮的便利的方法。
相關XML屬性
參數
shrinkAllColumns 若是標記全部列爲可收縮時爲true
public void setStretchAllColumns (boolean stretchAllColumns)
標記全部列爲可拉伸的便利的方法。
相關XML屬性
參數
stretchAllColumns 若是標記全部列爲可拉伸時爲 true
7、受保護方法
protected boolean checkLayoutParams (ViewGroup.LayoutParams p)
(譯者注:檢測是否是AbsoluteLayout.LayoutParams的實例)
protected LinearLayout.LayoutParams generateDefaultLayoutParams ()
返回寬度爲MATCH_PARENT
, 高度爲WRAP_CONTENT
的佈局參數集合。
返回值
默認佈局參數集合或空
protected LinearLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)
基於提供的佈局參數返回一組安全的佈局參數集合.當傳入 ViewGroup 的視圖的參數沒有經過checkLayoutParams(android.view.ViewGroup.LayoutParams)
的檢測時,調用該方法. 該方法會返回適合 ViewGroup 的新的佈局參數,可能從指定的佈局參數中複製適當的屬性。
參數
p 要轉換爲適合於 ViewGroup 的佈局參數的集合
返回值
ViewGroup.LayoutParams
或其子類的實例
protected void onLayout (boolean changed, int l, int t, int r, int b)
該視圖設置其子視圖的大小及位置時調用.派生類能夠重寫此方法,併爲其子類佈局。
參數
changed 是否爲視圖設置了新的大小和位置
l 相對於父視圖的左側的位置
t 相對於父視圖的頂部的位置
r 相對於父視圖的右側的位置
b 相對於父視圖的底部的位置
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
評估視圖及其內容,以決定其寬度和高度.此方法由measure(int, int)
調用,子類能夠重載以提供更精確、更有效率的衡量其內容尺寸的方法。
約定: 覆蓋該方法時,必須調用 setMeasuredDimension(int, int)
方法來保存評估結果的視圖的寬度和高度.若是忘記將致使 measure(int, int)
方法拋出IllegalStateException
異常.要有效的利用父類的onMeasure(int, int)
方法。
基類測量的是背景的大小,除非 MeasureSpec 容許超過背景.子類應該重寫 onMeasure(int, int)
方法,覺得其內容提供更適合的大小。
若是重寫了該方法,子類要確保其高度和寬度大於等於視圖的最小高度和寬度. (getSuggestedMinimumHeight()
和 getSuggestedMinimumWidth()
)
參數
widthMeasureSpec 父視圖要求的橫向空間大小.該要求由 View.MeasureSpec
進行了編碼處理。
View.MeasureSpec
進行了編碼處理。
8、補充
TableLayout.LayoutParams
譯者署名: madgoat
譯者連接: http://madgoat.cn
版本:Android 3.0 r1
結構
繼承關係
public static class TableLayout.LayoutParams extends LinerLayout.LayoutParams
java.lang.Object
android.view.ViewGroup.LayoutParams
android.view.ViewGroup.MarginLayoutParams
android.widget.LinearLayout.LayoutParams
android.widget.TableLayout.LayoutParams
概述
這種佈局參數強制每一個子元素的寬度爲MATCH_PARENT
和
每一個子元素的高度爲WRAP_CONTENT
,但只有在未指定高度的狀況下。
構造函數
public TableLayout.LayoutParams (Context c, AttributeSet attrs)
public TableLayout.LayoutParams (int w, int h)
public TableLayout.LayoutParams (int w, int h, float initWeight)
public TableLayout.LayoutParams ()
設置子元素的寬爲ViewGroup.LayoutParams
高爲WRAP_CONTENT
。
public TableLayout.LayoutParams (ViewGroup.LayoutParams p)
public TableLayout.LayoutParams (ViewGroup.MarginLayoutParams source)
公共方法
protected void setBaseAttributes (TypedArray a, int widthAttr, int heightAttr)
修改行寬度的參數爲MATCH_PARENT
;
行高度的佈局參數若是沒有指定則修改成WRAP_CONTENT
。
參數
a 一組樣式屬性
widthAttr 獲取的寬度屬性
heightAttr 獲取的高度屬性