首先介绍常用布局类

  • FrameLayout 最简单的布局管理器。

  这个布局管理类有几个特性:

  1. 添加组件默认在左上角的。
  2. 如果添加多个组件会叠加到一起,并且都在左上角。(可以通过一gravity属性改变叠加情况)
  3. 后添加的组件在上层。
  • LinearLayout LinearLayout通过垂直方向和水平方面进行布局的,LinearLayout允许每一个视图都有一个weight属性。
  • RelativeLayout RelativeLayout是相对于其他的组件和屏幕边缘布局的管理类。
  • GridLayout GridLayout是Android4.0引入的概念,网格的布局方式,及其灵活,可以减少嵌套布局方式。

1.定义布局

定义一个简单的XML布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<Buttonandroid:text="xxx"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

定义了一个线性布局方式,方向是垂直方向的(通过android:orientation="vertical"属性控制)

这里有三个常量我们将进行详细讲解fill_parent,match_parent,wrap_content。

  • fill_parent 填满父类的View,Fragment,Activity的空间。
  • wrap_content 把视图大小设置为显示内容的最小尺寸。
  • match_parent 从Android 2.2开始fill_parent改名为match_parent。

用java代码实现布局

  LinearLayout layout = new LinearLayout(this);layout.setOrientation(LinearLayout.VERTICAL);Button button = new Button(this);button.setText("xxx");int height = LinearLayout.LayoutParams.MATCH_PARENT;int weight = LinearLayout.LayoutParams.WRAP_CONTENT;layout.addView(button, new LinearLayout.LayoutParams(height, weight));setContentView(layout);

这个代码也比较简单,不做详细介绍了。

2.使用布局创建和设备无关的UI

1.LinearLayout(线性布局)

线性布局是最简单的布局之一,简单但是缺少了灵活性。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="xx1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="xx2"/>
  <!--被嵌套的垂直LinearLayout布局--><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="xx3"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="xx4"/></LinearLayout>
</LinearLayout>

效果下如图,这里有嵌套布局,一个水平布局的LinearLayout里面嵌套了一个竖直的LinearLayout布局方式。

2.RelativeLayout(相对布局)

RelativeLayout布局非常的灵活,主要针对边框和其他组件进行布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/buttonBar"android:layout_alignParentBottom="true"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:text="xx1"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:text="xx2"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout><Buttonandroid:text="xx3"android:layout_above="@+id/buttonBar"android:layout_alignParentLeft="true"android:layout_width="wrap_content"android:layout_height="wrap_content"></Button>
</RelativeLayout>

效果图如下

讲几个属性,这个属性对相对布局非常重要

  • android:layout_centerHrizontal  水平居中
  • android:layout_centerVertical 竖直居中
  • android:layout_centerInparent 相对于父类完全居中
  • android:layout_alignParentBottom 贴紧父元素的下边缘
  • android:layout_alignParentLeft 贴紧父元素的左边缘
  • android:layout_alignParentRight 贴紧父元素的右边缘
  • android:layout_alignParentTop 贴紧父元素的上边缘
  • android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

来个小的总结

android:layout_centerInparent 相当于layout_centerHrizontal和layout_centerVertical一起用是一个效果,如果同时设置android:layout_alignParentBottom和android:layout_alignParentTop会把控件拉长和父类一样,同样道理android:layout_alignParentLeft和android:layout_alignParentRight也一样拉长控件。

  • android:layout_below 在某元素的下方
  • android:layout_above 在某元素的的上方
  • android:layout_toLeftOf 在某元素的左边
  • android:layout_toRightOf 在某元素的右边

来个小总结

如果同时设置了android:layout_below和android:layout_above并且id指向的是同一个控件,这是控件会消失不见。如果同时设置了android:layout_below和android:layout_above指定不同的控件会把控件拉长。

  • android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
  • android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
  • android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
  • android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

来个小总结

同样这样的布局方式也会有拉长的情况。

  • android:layout_marginBottom 离某元素底边缘的距离
  • android:layout_marginLeft 离某元素左边缘的距离
  • android:layout_marginRight 离某元素右边缘的距离
  • android:layout_marginTop 离某元素上边缘的距离

3.GridLayout(网格布局)

网格布局在Android3.0(API level 11)导入,是所有布局管理器中最灵活的一种。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:alignmentMode="alignMargins"android:orientation="horizontal"android:columnOrderPreserved="true"android:rowCount="3"android:rowOrderPreserved="true"android:columnCount="4"><Button android:id="@+id/xx1" android:text="1" /><Button android:text="2" android:layout_column="0" android:layout_row="2"/><Button android:text="3" android:layout_rowSpan="3" android:layout_gravity="fill"/><Button android:text="4"/><Button android:text="5"/><Button android:text="6"/><Button android:text="7"/><Button android:text="8"/><Button android:text="9"/><Button android:text="10"/></GridLayout>

GridLayout下的属性

  • android:orientation  在GridLayout的根目录下,有两个属性horizontal和vertical顾名思义就是水平和竖直布局。
  • android:rowCount 网格的行数
  • android:columnCount 网格的列数

包含控件属性

  • android:layout_columnSpan 水平合并单元格
  • android:layout_rowSpan 竖直合并单元格
  • android:layout_gravity 有很多属性:fill,bottom 等等。

                  作者   Young-Ken(微博)

                  审阅者 Cindy-Leee(微博)转载请注明 http://www.cnblogs.com/youngKen/p/4831953.html

                         

转载于:https://www.cnblogs.com/youngKen/p/4831953.html

Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)相关推荐

  1. android UI进阶之布局的优化(二)

    上一篇博客中介绍了布局优化的工具,层级观察器Hierarchy Viewer和布局优化分析工具layoutopt.如果看过上篇博客的会注意到,layoutopt工具提示可以将<FrameLayo ...

  2. android UI进阶之布局的优化

    好久没更新博客了,趁着清明来写点什么. 今天来讲下如何使用android中提供的工具优化我们的布局.首先我们写一个最简单的框架布局. <?xml version="1.0"  ...

  3. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

  4. Android基础教程(二)之五大布局对象---FrameLayout,LinearLayout ,AbsoluteLayout,RelativeLayout,TableLayout.

    大家好,我们这一节讲一下Android对用五大布局对象,它们分别是FrameLayout(框架布局:不知道是不是这么翻译的),LinearLayout (线性布局),AbsoluteLayout(绝对 ...

  5. Android基础教程之五大布局对象------FrameLayout,LinearLayout,AbsoluteLayout,RelativeLayout,TableLayout...

    2019独角兽企业重金招聘Python工程师标准>>> 大家好,我们这一节讲一下Android对用五大布局对象,它们分别是FrameLayout(框架布局:不知道是不是这么翻译的), ...

  6. android线性布局设置控件固定在底部,Android UI组件LinearLayout线性布局详解

    LinearLayout 线性布局,该布局的继承关系: 1. 什么是线性布局 通俗的说感觉起来和线有关,参照线的特点,有么是横向的,要么是竖向的. LinearLayout是线性布局控件,它包含的子控 ...

  7. Android UI布局之线性布局LinearLayout

    Android UI 布局 线性布局 线性布局 activity_main.xml <?xml version="1.0" encoding="utf-8" ...

  8. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  9. 【Android 应用开发】UI绘制流程 ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 )

    文章目录 一. 博客相关资料 及 下载地址 1. 代码查看方法 ( ① 直接获取代码 | ② JAR 包替换 ) 2. 本博客涉及到的源码查看说明 二. Activity 生命周期回调机制 1. An ...

最新文章

  1. SIFT特征提取算法总结
  2. Java并发编程:AbstractQueuedSynchronizer的内部结构
  3. python2默认编码_解决Python2.x编码之殇
  4. [系列][编译原理]正则表达式
  5. 搜狗输入法Android5.1,ESXI 服务器断电之后一直 LOADING MODULE IPMI_SI_DRV 的解决办法...
  6. 无人驾驶入门(camera篇)
  7. RK30SDK系统重启源码分析
  8. php strip_tag 回车,详解PHP函数 strip_tags 处理字符串缺陷bug
  9. 浙江3 2计算机学校,浙江有那些3+2学校
  10. Axis2在eclipse和tomcat下的配置
  11. RAID磁盘阵列简介
  12. python3 英文字母大小写的转变
  13. php168+v9+下载,PHPCMS-PHPCMS V9-PHPCMS下载 V9.1正式版-完美下载
  14. TestCenter测试管理工具问题详解(6)
  15. mysql reads sql data_mysql – CREATE FUNCTION错误“此函数没有确定,否SQL或READS SQL DATA”...
  16. ThreeJs基础代码段(五)飘扬的旗帜
  17. web前端—前端三剑客之JS(12):字符串
  18. 服务器硬盘用在硬盘录像机,网络硬盘录像机是干什么用的
  19. Jenkins 自动构建之日程表配置
  20. 图片站选择什么样的服务器好?

热门文章

  1. JQuery解析JSON数据
  2. layout折叠后显示标题
  3. Havel-Hakimi定理
  4. 万变不离其中----SQL必记语法
  5. 《LeetCode力扣练习》第461题 汉明距离 Java
  6. 数据挖掘原理与算法:练习题1
  7. 高分辨率扫描出来的图片有摩尔纹_ue4 摩尔纹 远处模型闪烁问题
  8. 功率谱 魏凤英统计程序_频谱、能量谱、功率谱、功率谱估计
  9. mysql 创建date,在MySQL中从DATE和TIME创建DATETIME?
  10. python名称由来_Python的由来与使用介绍