前言:
作為android 4.0 后新增的一個(gè)布局,與前面介紹過(guò)的TableLayout(表格布局)其實(shí)有點(diǎn)大同小異;
不過(guò)新增了一些東東
①跟LinearLayout(線性布局)一樣,他可以設(shè)置容器中組件的對(duì)齊方式
②容器中的組件可以跨多行也可以跨多列(相比TableLayout直接放組件,占一行相比較)
因?yàn)槭莂ndroid 4.0新增的,API Level 14,在這個(gè)版本以前的sdk
都需要導(dǎo)入項(xiàng)目,等下會(huì)詳細(xì)介紹
常用屬性:
排列對(duì)齊:
①設(shè)置組件的排列方式: android:orientation="" vertical(豎直,默認(rèn))或者h(yuǎn)orizontal(水平)
②設(shè)置組件的對(duì)齊方式: android:layout_gravity="" center,left,right,buttom啊,這些,如果想同時(shí)用兩種的話:eg: buttom|left
設(shè)置布局為幾行幾列:
①設(shè)置有多少行:android:rowCount="4" //設(shè)置網(wǎng)格布局有4行
②設(shè)置有多少列:android:columnCount="4" //設(shè)置網(wǎng)格布局有4列
設(shè)置某個(gè)組件位于幾行幾列
注:都是從0開(kāi)始算的哦!
①組件在第幾行:android:layout_row = "1" //設(shè)置組件位于第二行
②組件在第幾列:android:layout_column = "2" //設(shè)置該組件位于第三列
設(shè)置某個(gè)組件橫跨幾行幾列:
①橫跨幾行:android:layout_rowSpan = "2" //縱向橫跨2行
②橫跨幾列:android:layout_columnSpan = "3" //橫向橫跨2列
使用實(shí)例:
最最最普遍的例子----計(jì)算器界面:
效果圖:
PS:這里要說(shuō)一點(diǎn),網(wǎng)格布局和其他布局不同,可以不為組件設(shè)置Layout_width和Layout_height屬性
因?yàn)榻M件的寬高由幾行幾列決定了,當(dāng)然,你也可以寫(xiě)個(gè)wrap_content
代碼:
- <GridLayout xmlns:android="http://schemas./apk/res/android"
- xmlns:tools="http://schemas./tools"
- android:id="@+id/GridLayout1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:rowCount="6"
- android:columnCount="4"
- android:orientation="horizontal">
-
- <TextView
- android:layout_columnSpan="4"
- android:text="0"
- android:textSize="50sp"
- android:layout_marginLeft="5dp"
- android:layout_marginRight="5dp"
- />
-
- <Button
- android:text="回退"
- android:layout_columnSpan="2"
- android:layout_gravity="fill"
- />
-
- <Button
- android:text="清空"
- android:layout_columnSpan="2"
- android:layout_gravity="fill"
- />
-
- <Button
- android:text="+"
- />
-
- <Button
- android:text="1"
- />
- <Button
- android:text="2"
- />
- <Button
- android:text="3"
- />
- <Button
- android:text="-"
- />
- <Button
- android:text="4"
- />
- <Button
- android:text="5"
- />
- <Button
- android:text="6"
- />
- <Button
- android:text="*"
- />
- <Button
- android:text="7"
- />
- <Button
- android:text="8"
- />
- <Button
- android:text="9"
- />
- <Button
- android:text="/"
- />
- <Button
- android:layout_width="wrap_content"
- android:text="."
- />
- <Button
- android:text="0"
- />
- <Button
- android:text="="
- />
- </GridLayout>
代碼解釋:
代碼很簡(jiǎn)單,就是清除和回退按鈕設(shè)置了跨兩列而已,其他的都是直接添加的
每個(gè)組件默認(rèn)是占一行,占一列
這里要說(shuō)明一點(diǎn):
通過(guò)android:layout_rowSpan和android:layout_columnSpan設(shè)置表明組件橫越的行數(shù)與列數(shù)
再通過(guò):android:layout_gravity = "fill" 設(shè)置表明組件填滿所橫越的整行或者整列
用法總結(jié):
①GridLayout使用虛細(xì)線將布局劃分為行,列和單元格,同時(shí)也支持在行,列上進(jìn)行交錯(cuò)排列
②使用流程:
step 1:先定義組件的對(duì)其方式 android:orientation 水平或者豎直
step 2:設(shè)置組件所在的行或者列,記得是從0開(kāi)始算的
step 3:設(shè)置組件橫跨幾行或者幾列;設(shè)置完畢后,需要在設(shè)置一個(gè)填充:android:layout_gravity = "fill"
可能遇到的問(wèn)題:
當(dāng)讀者將布局設(shè)置為GridLayout時(shí),會(huì)出現(xiàn)莫名其妙的報(bào)錯(cuò),
如果代碼語(yǔ)法邏輯沒(méi)有錯(cuò)的話,就可能是配置文件AndroidManifest.xml的問(wèn)題了
因?yàn)镚ridLayout是android 4.0 后才推出的,API Level 為 14
只需要將配置文件中的MinSDK改成14或者以上版本即可,保存,問(wèn)題就解決了!
低版本sdk使用GridLayout的方法
其實(shí)只需要導(dǎo)個(gè)包即可:
下載v7這個(gè)包
導(dǎo)入:sdk下的GridLayout目錄:sdk\extras\android\support\v7\gridlayout
然后為需要用到的工程添加library即可
監(jiān)于有些初學(xué)者連包都不會(huì)倒,這里就演示一下導(dǎo)包流程:
找到:sdk\extras\android\support\v7\gridlayout,點(diǎn)擊ok后
如圖,庫(kù)就存在了(ps:因?yàn)楣P者sdk是4.2的,所以才會(huì)顯示感嘆號(hào)..)
接著將它添入到工程中:
選擇后:
表明添加成功,接著在xml文件中我們就可以直接用了
在XML只要將GridLayout寫(xiě)成:
<android.support.v7.widget.GridLayout>
并添加一行命名空間,而不是替換:
xmlns:app="http://schemas./apk/res-auto"
即可
給出V7的包的下載鏈接:
http://pan.baidu.com/s/1kTC2s3l
總結(jié):
GridLayout的使用并不復(fù)雜,這節(jié)就寫(xiě)到這里
為了照顧部分初學(xué)者,有點(diǎn)啰嗦,忘讀者見(jiàn)諒
感謝大家的支持,如果有什么紕漏的,忘讀者給出,或者有什么好玩的實(shí)例
也可以和筆者說(shuō)下,O(∩_∩)O謝謝!
|