本帖最后由 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>
|