編輯:Android開發實例
前言
本章內容是android.widget.TableLayout,版本為Android 3.0 r1,翻譯來自"cnmahj"。
正文
一、結構
public class TableLayout extends LinerLayout
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.LinearLayout
android.widget.TableLayout
二、概述
按照行列來組織子視圖的布局。表格布局包含一系列的 TableRow
對象,用於定義行(實際上你也可以使用其它子對象,將在後面進行解釋)。表格布局不為它的行、列和單元格顯示表格線。每個行可以包含0個以上(包括0)的單元格; 每個單元格可以設置一個View
對象.與行包含很多單元格一樣, 表格包含很多列。表格的單元格可以為空.單元格可以象 HTML 那樣跨列。
列的寬度由該列所有行中最寬的一個單元格決定.不過表格布局可以通過 setColumnShrinkable()
方法或者 setColumnStretchable()
方法來標記某些列可以收縮或可以拉伸. 如果標記為可以收縮,列寬可以收縮以使表格適合容器的大小。如果標記為可以拉伸, 列寬可以拉伸以占用多余的空間。表格的總寬度由其父容器決定. 記住列可以同時具有可拉伸和可收縮標記是很重要的。在列可以調整其寬度以占用可用空間, 但不能超過限度時是很有用的.最後,你可以通過調用setColumnCollapsed()
方法來隱藏列。
表格布局的子對象不能指定 layout_width
屬性.寬度永遠是 MATCH_PARENT
。不過子對象可以定義 layout_height
屬性;其默認值是 WRAP_CONTENT
. 如果子對象是 TableRow
,其高度永遠是 WRAP_CONTENT
。
無論是在代碼還是在 XML 布局文件中,單元格必須安裝索引順序加入表格行. 列號是從 0 開始的.如果你不為子單元格指定列號,其將自動增值,使用下一個可用列號. 如果你跳過某個列號,他在表格行中作為空可以改對待。參見 ApiDemos 中通過 XML 創建表格的布局示例。
雖然表格布局典型的子對象是表格行,實際上你可以使用任何視圖類的子類, 作為表格視圖的直接子對象.視圖會作為只有一行並結合了所有列的單元格顯示。
參見
Table Layout tutorial
三、內部類
class TableLayout.LayoutParams
該類強制將子視圖的寬度設為 MATCH_PARENT
, 將沒有設置高度的子視圖的高度設為 WRAP_CONTENT
。
四、XML屬性
屬性名稱
描述
android:collapseColumns
隱藏從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重復的設置將被忽略。
相關方法
setColumnCollapsed(int,boolean)
android:shrinkColumns
收縮從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重復的設置將被忽略。你可以通過"*"代替收縮所有列。注意一列能同時表示收縮和拉伸。
相關方法
setColumnCollapsed(int,boolean)
android:stretchColumns
拉伸從0開始的索引列。列直接必須用逗號隔開:1, 2, 5。非法或重復的設置將被忽略。你可以通過"*"代替收縮所有列。注意一列能同時表示收縮和拉伸。
相關方法
setColumnCollapsed(int,boolean)
五、構造函數
public TableLayout (Context context)
為給定的上下文創建表格布局。
參數
context 應用程序上下文
public TableLayout (Context context, AttributeSet attrs)
使用指定的屬性集合為給定的上下文創建表格布局。
參數
context 應用程序上下文
attrs 屬性集合
六、公共方法
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屬性
android:collapseColumns
參數
columnIndex 列索引
isCollapsed 折疊時為true;否則為false
public void setColumnShrinkable (int columnIndex, boolean isShrinkable)
設置指定列是否可收縮。當行太寬時,表格可以收縮該列以提供更多空間。
調用該方法會請求布局操作。
相關XML屬性
android:shrinkColumns
參數
columnIndex 列索引
isShrinkable 如果列可以收縮,設為真;否則設為假。默認是假。
public void setColumnStretchable (int columnIndex, boolean isStretchable)
設置指定列是否可拉伸。可拉伸時,列會盡可能多的占用行中的可用空間。
調用該方法會請求布局操作。
相關XML屬性
android:stretchColumns
參數
columnIndex 列索引
isStretchable 如果列可以拉伸,設為真;否則設為假.默認是假
public void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)
注冊當從視圖中添加或移除子視圖時發生的回調函數。
參數
listener 層次結構變更時執行的回調函數
public void setShrinkAllColumns (boolean shrinkAllColumns)
標記所有列為可收縮的便利的方法。
相關XML屬性
android:shrinkColumns
參數
shrinkAllColumns 如果標記所有列為可收縮時為true
public void setStretchAllColumns (boolean stretchAllColumns)
標記所有列為可拉伸的便利的方法。
相關XML屬性
android:stretchColumns
參數
stretchAllColumns 如果標記所有列為可拉伸時為true
七、受保護方法
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
進行了編碼處理。
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 獲取的高度屬性
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
由於最近項目忙,博客一直沒有時間更新,今天有點時間就連續更新兩篇吧,過過瘾。 這篇圖片拖拽縮放也是我在項目中用到的,今天整理一下,將源碼奉獻給大家,希望對大家以後
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放