Android中文API(116)——TableLayout



前言

  本章內容是android.widget.TableLayout,版本為Android 3.0 r1,翻譯來自"cnmahj",歡迎大家訪問他的博客:http://android.toolib.net/blog/,再次感謝"cnmahj"!歡迎你一起參與Android的中文翻譯,聯系我over140@gmail.com。

 

聲明

  歡迎轉載,但請保留文章原始出處:)

 

    博客園:http://www.cnblogs.com/

    Android中文翻譯組: http://goo.gl/6vJQl

 

正文

  一、結構

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 進行了編碼處理。

         heightMeasureSpec        父視圖要求的縱向空間大小 . 該要求由 View.MeasureSpec 進行了編碼處理。
 

  八、補充

    文章精選

                   Android UI學習 - TableLayout

 

 

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       獲取的高度屬性

 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com