android學習——GridLayout網格布局

來源:互聯網
上載者:User

標籤:

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 version="1.0" encoding="utf-8">,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xml version="1.0">。這行代碼錶示按照1.0版本的XML規則進行解析。encoding = "utf-8"表示此xml檔案採用utf-8的編碼格式。編碼格式也可以是GB2312。

  (2)第②部分

  <GridLayout…… 表示採用網格布局管理器。

  (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格。  

  <Button          android:id="@+id/zero"          android:layout_columnSpan="2"      //列擴充兩列        android:layout_gravity="fill"      //按鈕填充滿兩格        android:text="0"/>  

  (2)第②部分

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

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

  (3)第③部分

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

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

  <Button          android:id="@+id/plus"          android:layout_rowSpan="2"      //行擴充兩行         android:layout_gravity="fill"     //按鈕填充滿兩格        android:text="+"/>  

  (4)第④部分

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

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

  <Button          android:id="@+id/equal"          android:layout_columnSpan="3"       //列擴充3列        android:layout_gravity="fill"       //按鈕填充滿3格         android:text="="/>    

  

  完整原始碼:

<?xml version="1.0" encoding="utf-8"?>  <GridLayout                                     //網路布局管理器    xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:orientation="horizontal"                    //水平方向    android:rowCount="5"                                                  //5行    android:columnCount="4" >                                             //4列      //16個按鈕  <Button                                              android:id="@+id/one"          android:text="1"/>    <Button          android:id="@+id/two"          android:text="2"/>     <Button          android:id="@+id/three"          android:text="3"/>    <Button          android:id="@+id/devide"          android:text="/"/>    <Button          android:id="@+id/four"          android:text="4"/>    <Button          android:id="@+id/five"          android:text="5"/>    <Button          android:id="@+id/six"          android:text="6"/>    <Button          android:id="@+id/multiply"          android:text="×"/>    <Button          android:id="@+id/seven"          android:text="7"/>    <Button          android:id="@+id/eight"          android:text="8"/>    <Button          android:id="@+id/nine"          android:text="9"/>      <Button          android:id="@+id/minus"          android:text="-"/>      <Button          android:id="@+id/zero"          android:layout_columnSpan="2"          android:layout_gravity="fill"          android:text="0"/>    <Button          android:id="@+id/point"          android:text="."/>      <Button          android:id="@+id/plus"          android:layout_rowSpan="2"          android:layout_gravity="fill"          android:text="+"/>      <Button          android:id="@+id/equal"          android:layout_columnSpan="3"          android:layout_gravity="fill"          android:text="="/>      </GridLayout>  

  6、最終顯示效果如下:

      

 

二、Java代碼方式布局

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

  暫略。

  

android學習——GridLayout網格布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.