| 本帖最后由 liu 于 2018-11-30 10:30 编辑 本节来了解网格布局(GridLayout)和绝对布局(AbsoluteLayout)
 
 
  
 Android新手开发之旅【目录】
 
 
  
 一、网格布局(GridLayout)
 
 GridLayout是在Android4.0中引进的新布局,GridLayout 的作用类似于HTML中的table标签,它把整个容器划分成rows x columns个网格,每个网格可以放置一个组件。(也可以设置跨行,跨列)
 
 
        属性:  
        android:columnCount                        设置网格列数量android:rowCount                             设置网格行数量
 android:alignmentMode                     设置布局管理器的对齐方式
 android:columnOrderPreserved          设置网格容器是否保留列序号
        android: rowOrderPreserved              设置网格管理器是否保留行序号               android:useDefaultMargins                 设置布局管理器是否使用页边距 
       网格容器内子组件的xml属性:    
       layout_column                                   设置子组件在GridLayout的第几列           layout_columnSpan                            设置子组件在GridLayout上横向上跨几列           layout_gravity                                    设置子组件用何种方式占据改网格空间           layout_row                                        设置子组件在GridLayout的第几行            layout_rowspan                                 设置子组件在GridLayout纵向上跨几行
 这里用其中最几个常用的属性来举个例子(键盘上的数字键):
       先上图: 
   
 实现代码:            平均分配格行/列的问题:[XML] 纯文本查看 复制代码 <?xml version="1.0" encoding="utf-8"?>[/color][/size][/font][font=Tahoma][size=4][color=#000000]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom|center_horizontal"
    android:paddingBottom="10dp"
    android:orientation="vertical">
    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:columnCount="4">
        <Button android:text="NumLock" />
        <Button android:text="/" />
        <Button android:text="*" />
        <Button android:text="-" />
        <Button android:text="7" />
        <Button android:text="8" />
        <Button android:text="9" />
        <Button android:text="+"
            android:layout_gravity="fill"
            android:layout_rowSpan="2"/>
        <Button android:text="4" />
        <Button android:text="5" />
        <Button android:text="6" />
        <Button android:text="1" />
        <Button android:text="2" />
        <Button android:text="3" />
        <Button android:text="Enter"
            android:layout_rowSpan="2"
            android:layout_gravity="fill"/>
        <Button android:text="0" />
        <Button android:text="."
            android:layout_gravity="fill"
            android:layout_columnSpan="2"/>
    </GridLayout>
</LinearLayout>
 
 GridLayout在Android5.1(API Level 21)时引入的android:layout_columnWeight和android:layout_rowWeight来解决平分问题,API21之前的需要使用兼容包:compile 'com.android.support:gridlayout-v7:26.0.0-alpha1'在布局中使用方法: [XML] 纯文本查看 复制代码 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:columnCount="4">
        <Button
            android:text="1"
            app:layout_columnWeight="1" />
        <Button
            android:text="2"
            app:layout_columnWeight="1" />
        <Button
            android:text="3"
            app:layout_columnWeight="1" />
        <Button
            android:text="4"
            app:layout_columnWeight="1" />
    </android.support.v7.widget.GridLayout>
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:columnCount="4">
        <Button android:text="1" />
        <Button android:text="2" />
        <Button android:text="3" />
        <Button android:text="4" />
    </GridLayout>
</LinearLayout>
实现效果如下图所示:
绝对布局可以直接指定子元素的绝对位置,但是这个布局基本上用不到,因为手机屏幕差别比较大,所以适用性比较差 。
   
 
 二、绝对布局(AbsoluteLayout)
这里只简单介绍一下用法:
 
 属性:
 
  android:layout_x               设置组件的X坐标
 android:layout_y               设置组件的Y坐标
 
 示意图:
 
 
   
 实现代码:
 
 [XML] 纯文本查看 复制代码 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <AbsoluteLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="80dp"
            android:layout_y="200dp"
            android:text="你好啊" />
    </AbsoluteLayout>
</LinearLayout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 |