Android中常用的布局方式有以下几种:

  • 线性布局LinearLayout

  • 相对布局RelativeLayout

  • 表格布局TableLayout

  • 层布局FrameLayout

  • 绝对布局AbsoluteLayout

  • 网格布局GridLayout

用的相对较多的是线性布局和相对布局。接下来重点演示这两种布局
其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。

(一)线性布局LinearLayout

线性布局中最重要的属性:orientation
horizontal(水平布局)和vertical(垂直布局)两种方式

属性名

  • orientation 布局方式,有horizontal(水平布局)和vertical(垂直布局)两种方式

  • id 组件名称

  • layout_width 该组件的宽度

  • layout_height 该组件的高度

  • layout_weight 权重

  • layout_gravity 该组件(在父容器)中的对齐方式

  • gravity 该组件所含子组件在其内部的对齐方式

  • background 设置背景图片或填充颜色

效果图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="@color/gray"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_marginTop="20dp"android:layout_width="match_parent"android:orientation="horizontal"android:layout_height="wrap_content"><TextViewandroid:text="权重1"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/><TextViewandroid:text="权重2"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/><TextViewandroid:text="权重3"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/><TextViewandroid:text="权重4"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/><TextViewandroid:text="权重5"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:layout_marginTop="20dp"android:background="@color/teal_200"android:layout_width="match_parent"android:gravity="center"android:layout_height="wrap_content"><TextViewandroid:text="第一个布局"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:background="@color/purple"android:layout_width="match_parent"android:gravity="center"android:layout_height="wrap_content"><TextViewandroid:text="第二个布局"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:background="@color/teal"android:layout_width="match_parent"android:gravity="center"android:layout_height="wrap_content"><TextViewandroid:text="第三个布局"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
</LinearLayout>

(二)相对布局RelativeLayout

属性:

  • android:layout_marginTop=“25dip” //顶部距离
  • android:gravity=“left” //空间布局位置
  • android:layout_marginLeft="15dip //距离左边距

相对于给定ID控件

  • android:layout_above 将该控件的底部置于给定ID的控件之上;

  • android:layout_below 将该控件的底部置于给定ID的控件之下;

  • android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;

  • android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;

  • android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;

  • android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;

  • android:layout_alignBottom 将该控件的底部边缘与给定ID的底部边缘对齐;

  • android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;

  • android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;

相对于父组件

  • android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
  • android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
  • android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
  • android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;

居中

  • android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
  • android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
  • android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;

指定移动像素

  • android:layout_marginTop 上偏移的值;
  • android:layout_marginBottom 下偏移的值;
  • android:layout_marginLeft   左偏移的值;
  • android:layout_marginRight   右偏移的值;

效果图

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="@color/gray"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:gravity="center"android:background="@color/teal"android:text="text1"android:layout_width="50dp"android:layout_height="50dp"/><TextViewandroid:id="@+id/tv_two"android:layout_alignParentBottom="true"android:gravity="center"android:background="@color/teal"android:text="text2"android:layout_width="50dp"android:layout_height="50dp"/><TextViewandroid:layout_alignParentRight="true"android:gravity="center"android:background="@color/teal"android:text="text3"android:layout_width="50dp"android:layout_height="50dp"/><TextViewandroid:layout_centerInParent="true"android:gravity="center"android:background="@color/teal"android:text="text5"android:layout_width="50dp"android:layout_height="50dp"/><TextViewandroid:layout_above="@+id/tv_two"android:layout_alignParentRight="true"android:gravity="center"android:background="@color/teal"android:text="text4"android:layout_width="50dp"android:layout_height="50dp"/>
</RelativeLayout>

(三)表格布局TableLayout

属性

三个常用属性

  • android:collapseColumns:设置需要被隐藏的列的序号
  • android:shrinkColumns:设置允许被收缩的列的列序号
  • android:stretchColumns:设置运行被拉伸的列的列序号

(四)帧布局FrameLayout

FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置!

效果图


xml布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="@color/gray"android:layout_height="match_parent"><TextViewandroid:background="#000000"android:layout_width="fill_parent"android:layout_height="180dp"/><TextViewandroid:background="#ffff00"android:layout_width="fill_parent"android:layout_height="130dp"/><TextViewandroid:background="#ff00ff"android:layout_width="fill_parent"android:layout_height="100dp"/><TextViewandroid:background="#00ffff"android:layout_width="fill_parent"android:layout_height="50dp"/>
</FrameLayout>

(五)绝对布局AbsoluteLayout

属性:

  • 绝对布局又可以叫做坐标布局,可以直接指定子元素的绝对位置(xy)
  • 由于手机屏幕尺寸差别比较大使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷

常用属性:

  • android:foreground:*设置改帧布局容器的前景图像
  • android:foregroundGravity:设置前景图像显示的位置
  • android:layout_x=”” 控制当前子类控件的x位置
  • android:layout_y=”” 控制当前子类控件的y位置

效果图

.xml布局

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="@color/gray"android:layout_height="match_parent"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="26dp"android:layout_y="124dp"android:text="Button" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="66dp"android:layout_y="224dp"android:text="Button" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="126dp"android:layout_y="323dp"android:text="Button" />
</AbsoluteLayout>

(六)网格布局GridLayout

和之前的TableLayout(表格布局) 有点类似,不过网格布局的好处是:

  • 可以自己设置布局中组件的排列方式
  • 可以自定义网格布局有多少行,多少列
  • 可以直接设置组件位于某行某列
  • 可以设置组件横跨几行或者几列

效果图

.xml布局:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/GridLayout1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:columnCount="4"android:orientation="horizontal"android:rowCount="6" ><TextViewandroid:layout_columnSpan="4"android:layout_gravity="fill"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:background="#15CBE3"android:text="0"android:textSize="50sp" /><Buttonandroid:layout_columnSpan="2"android:layout_gravity="fill"android:text="回退" /><Buttonandroid:layout_columnSpan="2"android:layout_gravity="fill"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:text="0" /><Button android:text="." /><Button android:text="=" /><Button android:text="/" />
</GridLayout>

<GridLayout android:layout_width=“fill_parent”:网格布局宽度为填满屏幕

<GridLayout android:layout_height=“wrap_content”:网格布局高度为包裹内容

<GridLayout android:columnCount=“4”:网格布局设置 4 列

<GridLayout android:rowCount=“6”:网格布局设置 6 行

<GridLayout android:layout_columnSpan=“2”:清空和回退横跨两列

<GridLayout android:orientation=“horizontal”:网格布局设置为水平布局

以上是六大布局基本讲解

Android studio 六大基本布局详解相关推荐

  1. 《Android Studio应用开发实战详解》——导读

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的目录,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 第1章 An ...

  2. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  3. android studio gradle3.3,Android studio 3.2 升级详解及Gradle配置

    Android studio 3.2 升级详解及Gradle配置 发布时间:2018-09-29 15:36, 浏览次数:618 , 标签: Android studio Gradle 一直在使用An ...

  4. libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.3节Android系统架构,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  5. 《Android Studio应用开发实战详解》——第1章,第1.2节Android系统基础

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.2节Android系统基础,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  6. 《Android Studio应用开发实战详解》——第1章,第1.4节Android和Linux的关系

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.4节Android和Linux的关系,作者 王翠萍,更多章节内容可以访问云栖社区"异步社 ...

  7. 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...

  8. 《Android Studio应用开发实战详解》版权信息

    版权信息 书名:Android Studio应用开发实战详解 ISBN:978-7-115-43673-3 本书由人民邮电出版社发行数字版.版权所有,侵权必究. 您购买的人民邮电出版社电子书仅供您个人 ...

  9. 《Android Studio应用开发实战详解》——第1章,第1.1节移动智能设备系统发展现状...

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.1节移动智能设备系统发展现状,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&qu ...

  10. Android六大基本布局详解

    一.基本理论 Android六大基本布局分别是:线性布局LinearLayout.表格布局TableLayout.相对布局RelativeLayout. 层布局FrameLayout.绝对布局Abso ...

最新文章

  1. golang map 删除 清空
  2. C++中“引用”的底层实现
  3. 8-[多线程] 进程池线程池
  4. 实现DDD领域驱动设计: Part 4
  5. Spring Batch:多种格式输出编写器
  6. 论策谈百度快照回档和后退的原因
  7. 关于信息熵的简单理解
  8. 猫眼电影排行榜python爬虫
  9. spl_autoload_register 和 __autoload()魔术方法
  10. C#匿名委托,匿名函数,lambda表达式
  11. Linux tcp_timestamps相关
  12. Android进阶学习-使用Canvas自定义ArcView(4)
  13. c语言程序无法正常运行怎么办,win7系统运行软件提示应用程序无法正常启动0xc000005怎么办...
  14. C语言新思路跟未来教育哪个好,计算机等级考试用什么书好 未来教育的书怎么样?貌似网上评价很高...
  15. 计算机字符编码从0/1到UTF-8
  16. 微信 存储目录 计算机,电脑微信文件夹保存位置
  17. 基于lingo的线性回归和非线性回归
  18. liger ui 表格
  19. 熊哥课件--DOM获取、修改、新增、删除、事件
  20. layui表格宽度自适应

热门文章

  1. 【CAD开发】3dxml文件格式开发准备
  2. java nfc_如何使用java创建简单的NFC程序?
  3. 《Spring揭秘》读书笔记
  4. MySQL数据类型详解
  5. 微信公众号装b神器生成引流系统源码
  6. 【MFC自绘窗口】 窗口设计第一课
  7. 报错 xxx@1.0.0 dev D:\ webpack-dev-server --inline --progress --configbuild/webpack.dev.conf.js
  8. 【记录】锐捷Windows认证客户端常见问题及处理方法
  9. Unity3D用户手册翻译(与Unity3D圣典同步)—— 优化手机的实用指南 - 未来及高端设备...
  10. SVN服务更换小记(由subversion更换为VisualSVN)