Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第16章、布局Layouts之GridLayout網格布局(從零開始學Android)

第16章、布局Layouts之GridLayout網格布局(從零開始學Android)

編輯:Android技術基礎

GridLayout網格布局

android4.0以上版本出現的GridLayout布局解決了以上問題。GridLayout布局使用虛細線將布局劃分為行、列和單元格,也支持一個控件在行、列上都有交錯排列。而GridLayout使用的其實是跟LinearLayout類似的API,只不過是修改了一下相關的標簽而已,所以對於開發者來說,掌握GridLayout還是很容易的事情。GridLayout的布局策略簡單分為以下三個部分:

首先它與LinearLayout布局一樣,也分為水平和垂直兩種方式,默認是水平布局,一個控件挨著一個控件從左到右依次排列,但是通過指定android:columnCount設置列數的屬性後,控件會自動換行進行排列。另一方面,對於GridLayout布局中的子控件,默認按照wrap_content的方式設置其顯示,這只需要在GridLayout布局中顯式聲明即可。

       其次,若要指定某控件顯示在固定的行或列,只需設置該子控件的android:layout_row和android:layout_column屬性即可,但是需要注意:android:layout_row=”0”表示從第一行開始,android:layout_column=”0”表示從第一列開始,這與編程語言中一維數組的賦值情況類似。

最後,如果需要設置某控件跨越多行或多列,只需將該子控件的android:layout_rowSpan或者layout_columnSpan屬性設置為數值,再設置其layout_gravity屬性為fill即可,前一個設置表明該控件跨越的行數或列數,後一個設置表明該控件填滿所跨越的整行或整列。

   我們下面通過XML布局和Java代碼布局兩種方式分別舉例:

\

 

一、XML方式布局

1、創建一個空白Activity

\

3、打開“res/layout/activity_main.xml”文件,修改成以下代碼。

\

(1)第①部分

,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,。這行代碼表示按照1.0版本的XML規則進行解析。encoding = "utf-8"表示此xml文件采用utf-8的編碼格式。編碼格式也可以是GB2312。

(2)第②部分

(3)第③部分

android:layout_width="match_parent" android:layout_height="match_parent"表示布局管理器寬度和高充將填充整個屏幕寬度和高度。

(4)第④部分

android:orientation="horizontal"表示采用水平布局,垂直為vertical。

(5)第⑤部分

該網格布局管理器采用5行4列。

4、我們向GridLayout放入16個按鈕Button。

\  \

5、找不同。

\

我們對一下,找出不同地方。

(1)第①部分

目標0按鈕是占據2個格;當前0按鈕占1格。

[html] view plain copy  
  1. <Button    
  2.       android:id="@+id/zero"    
  3.       android:layout_columnSpan="2"      //列擴展兩列  
  4.       android:layout_gravity="fill"      //按鈕填充滿兩格  
  5.       android:text="0"/>    

(2)第②部分

目標·按鈕在第4行第3列;當前·按鈕在第4行第2列。

解決辦法:0按鈕占據2格後,·按鈕會自動到這個位置。

(3)第③部分

目標+按鈕在第4行第4列並且行擴展2行;當前·按鈕在第4行第3列。

解決辦法:由於0按鈕占據2格後,目標+會自動到這個位置。

[html] view plain copy  
  1. <Button    
  2.       android:id="@+id/plus"    
  3.       android:layout_rowSpan="2"      //行擴展兩行   
  4.       android:layout_gravity="fill"     //按鈕填充滿兩格  
  5.       android:text="+"/>    

(4)第④部分

目標=按鈕在第5行,占據3列位置;當前=按鈕在第4行第4列。

解決辦法:位置由於0的擴展後,目前=按鈕會自動到第5行;列擴展同0按鈕。

[html] view plain copy  
  1. <Button    
  2.       android:id="@+id/equal"    
  3.       android:layout_columnSpan="3"       //列擴展3列  
  4.       android:layout_gravity="fill"       //按鈕填充滿3格   
  5.       android:text="="/>      

 

完整源代碼:

[html] view plain copy  
  1. xml version="1.0" encoding="utf-8"?>    
  2. <GridLayout                                     //網絡布局管理器  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"    
  4.     android:layout_width="wrap_content"    
  5.     android:layout_height="wrap_content"    
  6.     android:orientation="horizontal"                  //水平方向  
  7.     android:rowCount="5"                                                  //5行  
  8.     android:columnCount="4" >                                             //4列  
[html] view plain copy  
  1. //16個按鈕  
  2. <Button                                        
  3.       android:id="@+id/one"    
  4.       android:text="1"/>    
  5. <Button    
  6.       android:id="@+id/two"    
  7.       android:text="2"/>    
  8. <Button    
  9.       android:id="@+id/three"    
  10.       android:text="3"/>    
  11. <Button    
  12.       android:id="@+id/devide"    
  13.       android:text="/"/>    
  14. <Button    
  15.       android:id="@+id/four"    
  16.       android:text="4"/>    
  17. <Button    
  18.       android:id="@+id/five"    
  19.       android:text="5"/>    
  20. <Button    
  21.       android:id="@+id/six"    
  22.       android:text="6"/>    
  23. <Button    
  24.       android:id="@+id/multiply"    
  25.       android:text="×"/>    
  26. <Button    
  27.       android:id="@+id/seven"    
  28.       android:text="7"/>    
  29. <Button    
  30.       android:id="@+id/eight"    
  31.       android:text="8"/>    
  32. <Button    
  33.       android:id="@+id/nine"    
  34.       android:text="9"/>    
  35.   <Button    
  36.       android:id="@+id/minus"    
  37.       android:text="-"/>    
  38.   <Button    
  39.       android:id="@+id/zero"    
  40.       android:layout_columnSpan="2"    
  41.       android:layout_gravity="fill"    
  42.       android:text="0"/>    
  43. <Button    
  44.       android:id="@+id/point"    
  45.       android:text="."/>    
  46.   <Button    
  47.       android:id="@+id/plus"    
  48.       android:layout_rowSpan="2"    
  49.       android:layout_gravity="fill"    
  50.       android:text="+"/>    
  51.   <Button    
  52.       android:id="@+id/equal"    
  53.       android:layout_columnSpan="3"    
  54.       android:layout_gravity="fill"    
  55.       android:text="="/>      
[html] view plain copy  
  1. GridLayout>    

6、最終顯示效果如下:

\

 

二、Java代碼方式布局

上面我們已經了解采用XML進行LinearLayout布局,我們現在再來學習一下如何使用Java代碼完成與之同樣功能。

暫略。

 

題外話:

[html] view plain copy  
  1. <strong>AbsoluteLayout絕對布局strong>  
  2.   
  3. AbsoluteLayout絕對布局猶如div指定了absolute屬性,用X,Y坐標來指定元素的位置!  
  4.   
  5. 該布局目前已經淘汰,知道就行了!  
  6.  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved