GridLayout(网格布局)

常用属性:

排列对齐:

①设置组件的排列方式:  android:orientation=""     vertical(竖直,默认)或者horizontal(水平)

②设置组件的对齐方式:  android:layout_gravity=""  center,left,right,buttom啊,这些,如果想同时用两种的话:eg: buttom|left


设置布局为几行几列:

①设置有多少行:android:rowCount="4"       //设置网格布局有4行

②设置有多少列:android:columnCount="4"    //设置网格布局有4列


设置某个组件位于几行几列

注:都是从0开始算的哦!


①组件在第几行:android:layout_row = "1"   //设置组件位于第二行

②组件在第几列:android:layout_column = "2"   //设置该组件位于第三列


设置某个组件横跨几行几列:

①横跨几行:android:layout_rowSpan = "2"    //纵向横跨2行

②横跨几列:android:layout_columnSpan = "3"     //横向横跨2列


使用实例:

最最最普遍的例子----计算器界面:

效果图:



PS:这里要说一点,网格布局和其他布局不同,可以不为组件设置Layout_width和Layout_height属性

因为组件的宽高由几行几列决定了,当然,你也可以写个wrap_content


代码:

  1. <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/GridLayout1"  
  4.     android:layout_width="wrap_content"  
  5.     android:layout_height="wrap_content"  
  6.     android:rowCount="6"  
  7.     android:columnCount="4"  
  8.     android:orientation="horizontal">  
  9.   
  10.     <TextView   
  11.         android:layout_columnSpan="4"  
  12.         android:text="0"  
  13.         android:textSize="50sp"  
  14.         android:layout_marginLeft="5dp"  
  15.         android:layout_marginRight="5dp"  
  16.     />  
  17.   
  18.     <Button   
  19.         android:text="回退"   
  20.         android:layout_columnSpan="2"  
  21.         android:layout_gravity="fill"     
  22.     />  
  23.      
  24.     <Button   
  25.         android:text="清空"  
  26.         android:layout_columnSpan="2"  
  27.         android:layout_gravity="fill"      
  28.     />  
  29.       
  30.     <Button   
  31.         android:text="+"      
  32.     />  
  33.      
  34.     <Button   
  35.         android:text="1"      
  36.     />  
  37.     <Button   
  38.         android:text="2"      
  39.     />  
  40.     <Button   
  41.         android:text="3"      
  42.     />  
  43.     <Button   
  44.         android:text="-"      
  45.     />  
  46.     <Button   
  47.         android:text="4"      
  48.     />  
  49.     <Button   
  50.         android:text="5"      
  51.     />  
  52.     <Button   
  53.         android:text="6"      
  54.     />  
  55.     <Button   
  56.         android:text="*"      
  57.     />  
  58.     <Button   
  59.         android:text="7"      
  60.     />  
  61.     <Button   
  62.         android:text="8"      
  63.     />  
  64.     <Button   
  65.         android:text="9"      
  66.     />  
  67.     <Button   
  68.         android:text="/"      
  69.     />  
  70.     <Button   
  71.         android:layout_width="wrap_content"  
  72.         android:text="."      
  73.     />  
  74.     <Button   
  75.         android:text="0"      
  76.     />  
  77.      <Button   
  78.         android:text="="      
  79.     />  
  80. </GridLayout>  

代码解释:

代码很简单,就是清除和回退按钮设置了跨两列而已,其他的都是直接添加的

每个组件默认是占一行,占一列

这里要说明一点:

通过android:layout_rowSpan和android:layout_columnSpan设置表明组件横越的行数与列数

再通过:android:layout_gravity = "fill"  设置表明组件填满所横越的整行或者整列


用法总结:

①GridLayout使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列

②使用流程:

step 1:先定义组件的对其方式 android:orientation  水平或者竖直

step 2:设置组件所在的行或者列,记得是从0开始算的

step 3:设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = "fill"

另外:这些属性也常用到:

<GridView android:id="@+id/grid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:verticalSpacing="35px" <!-- grid元素之间的竖直间隔 -->
    android:horizontalSpacing="5px"  <!--grid元素之间的水平间隔  -->
    android:numColumns="auto_fit" <!--表示有多少列,如果设置为auto_fit,将根据columnWidth和Spacing来自动计算 -->
    android:columnWidth="100px" <!-- 一般建议采用有像素密度无关的dip或者dp来表示-->
    android:stretchMode="columnWidth" <!--如何填满空余的位置,模拟器采用WVGA800*480,每排4列,有4*100+5*3=415,还余65px的空间,如果是columnWidth,则这剩余的65将分摊给4列,每列增加16/17px。如果采用SpacingWidth,则分摊给3个间隔空隙 -->
    android:gravity="center"  /> 

原文地址:https://www.cnblogs.com/imqsl/p/6602039.html