赞
踩
接下来进入Android 的入门基础知识,来了解Android中的布局.Android中有六大布局,其中分别是 RelativeLayout(相对布局),LinearLayout(线性布局),TableLayout(表格布局) ,FrameLayout(帧布局),ConstraintLayout(约束布局),GridLayout(网格布局) . 在实际的界面布局中我们最常用的是使用线性布局与相对布局结合使用,这个能达到较好的页面效果
RelativeLayout相对布局管理器,需要有一个参考对象来进行页面布局,所以性对布局的实现前提是要有一个参考的组件,例如桌面的顶端,左侧,右侧,底部
相对页面布局语法格式:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
//这里写属性列表>
</RelativeLayout>
以标记开始以结束,属性后面是XML命名空间的属性
RelativeLayout 有以下主要属性:
RelativeLayout 提供了一个内部类,类中又提供了许多重要的属性来更好的控制界面中的各个控件,其支持XML属性:
(1)、以布局管理器作为参考的属性:
(2)、以其他组件作为参考的属性:
(3)、 设置组件在布局管理器上下左右中的偏移量:
(4)、设置组件内容与组件边框的填充量:
实例:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button1" android:layout_centerInParent="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button2" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button3" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="10dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button4" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" android:layout_marginLeft="10dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button5" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_marginRight="10dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button6" android:layout_toLeftOf="@id/btn_1" android:layout_alignTop="@id/btn_1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button7" android:layout_toRightOf="@id/btn_1" android:layout_alignTop="@id/btn_1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button9" android:layout_below="@id/btn_1" android:layout_alignStart="@id/btn_1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是button8" android:layout_above="@id/btn_1" android:layout_alignStart="@id/btn_1" /> </RelativeLayout>
LinearLayout (线性布局)管理器是将其中的组件按照水平或者垂直的方向来排列,好比串手链一样,一个一个的串起来然后再按照水平或者垂直的方式排列就可以了
线性布局语法格式:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
//属性列表
// 使用 android:orientation="vertical|Horizontal" 设置排列方式
>
</LinearLayout>
LinearLayout的属性:
实例:
<?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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".LinearActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="+" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="4" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="5" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="6" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="-" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="7" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="8" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="9" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="*" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="0" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="/" android:background="#047EFD"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="=" /> </LinearLayout> </LinearLayout>
FrameLayout(帧布局) 管理器是比较简单的一个布局,这个布局是直接在屏幕上分配一块区域,组件默认置于左上角,这种布局没有任何的定位,布局大小由内部最大控件决定,新创建的控件会覆盖在上一个控件上,就像三明治一样一层一层叠起来,所以帧布局并不常用
帧布局语法格式:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
// 列表属性
>
</FrameLayout>
FrameLayout属性:
实例:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LYXFrameLayoutActivity"> <!-- 第一层在控件的最下面--> <TextView android:layout_width="400dp" android:layout_height="400dp" android:background="#12eb4a" android:text="第一层" android:layout_gravity="center" /> <TextView android:layout_width="300dp" android:layout_height="300dp" android:background="#0000ff" android:text="第二层" android:layout_gravity="center" /> <TextView android:layout_width="200dp" android:layout_height="200dp" android:background="#00deff" android:text="第三层" android:layout_gravity="center" /> <TextView android:layout_width="100dp" android:layout_height="100dp" android:background="#a800ff" android:text="第四层" android:layout_gravity="center" /> </FrameLayout>
TableLayout 表格布局,顾名思义,即通过表格来管理内部的组件排列,表格管理器通过设定行和列来划分区域,布局管理器中可以设置隐藏,也可以设置伸展或者收缩的属性
表格布局语法:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
//列表属性
>
<TableRow 列表属性>添加组件</TableRow>
<TableRow 列表属性>添加组件</TableRow>
<TableRow 列表属性>添加组件</TableRow>
.......
</TableLayout>
TableLayout 继承了LinearLayout ,故支持LinearLayout的所有属性,TableLayout还有以下属性:
,
隔开)实例:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LYXTableLayoutActivity" android:stretchColumns="0" android:shrinkColumns="2"> <TableLayout android:stretchColumns="0"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" /> </TableRow> </TableLayout> <TableLayout android:stretchColumns="0" android:shrinkColumns="1" android:collapseColumns="3"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="长长的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被压缩了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被隐藏了" /> </TableRow> </TableLayout> <TableLayout android:stretchColumns="0" android:shrinkColumns="1"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常吗" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被压缩了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> </TableRow> </TableLayout> <TableLayout android:collapseColumns="1"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被压缩了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> </TableRow> </TableLayout> <TableLayout android:collapseColumns="0" android:shrinkColumns="1"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被隐藏了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被压缩了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> </TableRow> </TableLayout> <TableLayout android:stretchColumns="2" android:shrinkColumns="2"> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常的按钮" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被压缩了" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我被拉伸了" /> </TableRow> </TableLayout> </TableLayout>
网格布局是在Android4.0 以后提出来的,他与表格布局管理器类似,但比表格布局更加灵活,可以跨行跨列摆放组件
网格布局 语法格式:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
//列表属性
>
</GridLayout>
GridLayout 属性:
为了控制各个组件的排列,网格布局管理器还有以下属性:
注意:
如果一个组件需要设置跨行或者跨列,需要先设置layout_columnSpan
或者layout_cowSpan
,然后在设置layout_gravity
属性为fill
,这样就可以填满横跨的行或列实例:
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="4" android:rowCount="6" tools:context=".LYXGridLayoutActivity"> <EditText android:layout_columnSpan="4" android:layout_gravity="top|right" android:layout_marginLeft="5dp" android:background="#fff" android:text="0" android:textSize="50dp"/> <Button android:text="+" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp" android:textColor="#00f"/> <Button android:text="-" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="*" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="/" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="1" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="2" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="3" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="%" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="4" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="5" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="6" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="." android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="7" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="8" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="9" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="=" android:layout_rowSpan="2" android:layout_gravity="fill" android:background="#047EFD" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> <Button android:text="C" android:layout_gravity="fill_horizontal" android:layout_columnWeight="2" android:layout_rowWeight="1" android:layout_columnSpan="2" android:textSize="20dp"/> <Button android:text="0" android:layout_rowSpan="1" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="20dp"/> </GridLayout>
ConstraintLayout 是Android Studio 2.2提出的新的可视化操作布局方
掌握Constraint Layout的使用:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。