布局管理器:控制组件是如何摆放的。

5种常用的布局管理器:

  1. RelativeLayout,相对布局管理器
  2. LineraLayout,线性
  3. FrameLayout,帧
  4. TableLayout,表格
  5. GridLayout,网格

一、相对布局管理器

适用于:可以根据组件间的相对位置来摆放时。

属性:
android:gravity,控制摆放位置
android:ignoreGravity,说明谁不受gravity控制,后跟id。

RelativeLayout.LayoutParams为其内部类
该类提供的XML属性:
决定组件相对于参考组件的位置,属性值为id:
android:layout_above
android:layout_below
android:layout_toLeftOf
android:layout_toRightOf

设置组件与布局管理器哪边对齐,属性值为布尔类型:
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight
android:layout_alignParentTop

设置组件与某个组件的上下左右对齐:
android:layout_alignBottom
android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop

设置组件位于布局管理器的哪个位置:
android:layout_centerHorizontal,水平居中
anrodi:layout_centerInparent,布局管理器中间
anrodi:layout_centerVertical,垂直居中

二、线性布局管理器

将放入其中的组件按水平或垂直方向排列:垂直/水平布局管理器。

android:orientation="vertical"    //垂直,每一行只能放置一个组件
android:orientation="horizontal" //水平,每一列只能放置一个组件
//超出屏幕边缘的的组件不再显示

LinearLayout标记
属性:
android:orientation

android:gravity,控制组件位置,可以使用多个参数,如使组件靠右下角对齐,则属性值"right|bottom",使用竖线进行分割。

android:layout_weight,控制组件分配剩余空间的权重。注意:是在占有自身长宽的前提下,按权重去分配剩余空间。

android:layout_margin,本元素离上下左右间的距离

android:layout_marginStart,本元素离开始的位置的距离

android:layout_marginEnd,本元素离结束位置的距离

三、帧布局管理器

为每个放入其中的组件创建空白区域,按照前后顺序层叠放置。

FrameLayout标记
属性:
android:foreground,设置前景图像
android:foregroundGravity,设置前景图像的位置
前景图像:始终位于前面的图像,其他图像无法将其覆盖。

四、表格布局管理器

以行列的形式来管理放入其中的UI组件的。

添加表格行:使用TableRow标记,每添加一个TableRow标记就增加一行。而TableRow标记本身为容器,可在其中添加其他组件,在TableRow中每添加一个组件,这个组件就占一列,添加多个组件,这一行就包含多列,在表格布局管理器中无表格列的标记,列由组件个数来确定。

在表格布局管理器中,列序号从0开始。

属性:
android:collapseColumns,设置某列被隐藏,属性值为所在列序号。若要同时隐藏多个列,用逗号分隔开。
android:stretchColumns,允许某列被拉伸,属性值为所在列序号。若要同时允许拉伸多个列,用逗号分隔开。
android:shrinkColumns,允许某列被收缩,属性值为所在列序号。若要同时允许收缩多个列,用逗号分隔开。

在表格布局管理器中可以不使用TableRow标记,而是直接向TableLayout增加组件,每添加一个组件就增加一行。

改变表格行的位置, TableRow android:paddingTop="200dp"等形式修改。


拓展<EditText>为标记框组件,属性:
android:layout_width
android:layout_height
android:hint,输入提示信息

五、网格布局管理器

屏幕被虚拟细线划分成行列单元格,每个单元格放一个组件。

表格布局管理器和网格布局管理器的比较:
表格布局管理器可以跨列显示,当一行占满后,超出容器的组件将不会显示。
网格布局管理器可以跨列、跨行,当一行占满后,超出容器的组件将自动换行

GridLayout来标记

属性:
android:colunmnCount,设置网格最大列数。
android:orientation,设置没设定行列时的排列方式。
android:rowCount,设置网格的最大行数。

提供了另外一个内部类,提供XML属性,可控制各个子组件的分布,GridLayout.LayoutParams,
属性:
android:layout_column,指定子组件位于网格第几列
android:layout_columnSpan,指定子组件横向跨几列
android;layout_columnWeight,指定子组件在水平方向的权重,即分配水平剩余空间的比例。、
android:layout_gravity,指定子组件以什么方式占据网格空间
android:layout_row,指定子组件位于网格第几行
android:layout_rowSpan,指定子组件纵向跨几行
android;layout_rowWeight,指定子组件在垂直方向的权重

六、布局管理器的嵌套

嵌套原则:

  1. 根布局管理器必须包含xmlns属性
  2. 在一个布局文件中,最多只能有一个根布局管理器,如果需要有多个还需要使用一个根布局管理器将他们括起来,而另外的这个根布局管理器才是跟布局管理器。
  3. 不能嵌套太深,嵌套太深会影响性能。

Android 布局管理器相关推荐

  1. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面

    场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  2. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片

    场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  3. Android布局管理器-使用LinearLayout实现简单的登录窗口布局

    场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...

  4. 移动开发技术(Android)——实验2 Android布局管理器的应用

    移动开发技术(Android)--实验2 Android布局管理器的应用 一.实验目的 二.实验内容 (一)创建一个Android项目,名称为"shiyan0201_专业_×××" ...

  5. 【android编程】 第三讲-Android布局管理器

    android编程 第三讲 Android布局管理器 文章目录 android编程 第三讲 Android布局管理器 约束布局管理器ConstraintLayout 线性布局管理器LinearLayo ...

  6. android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)

    控件类概述 View 可视化控件的基类 属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickabl ...

  7. android 布局管理器,【Android开发】布局管理器-表格布局

    在XML布局文件中定义表格布局管理器的基本语法: 属性列表 > 需要添加的UI组件 多个TableRow TableLayout支持的XML属性: android:collapseColumns ...

  8. android 布局管理器 各种布局简介

    android中布局管理器是以ViewGroup为基类派生的.分为线性布局(LinearLayout).表格布局(TableLayout).帧布局(FrameLayout).相对布局(Relative ...

  9. 零基础学Android——布局管理器

    第一章<第一个Android应用程序> 第三节 布局管理器 导入: 我们在使用手机软件时候,可以发现每一款软件的组件排列方式都是不同的,这样的布局可以轻松的了解和使用软件,在这一节和我一起 ...

最新文章

  1. 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别
  2. 如何让网站用上HTML5 Manifest
  3. js json制表符报错_JS自学_常见错误复盘
  4. 单片机控制灯光亮度c语言程序,基于51单片机控制LED灯光亮度并报警
  5. 【渝粤教育】国家开放大学2019年春季 0134-22T劳动法学 参考试题
  6. Linq to Sql : 三种事务处理方式
  7. MyBatis框架笔记01:MyBatis初探
  8. 支票数字大写转换器_信用卡支票数字生成器Java程序
  9. opera价格设置(一)
  10. 车牌识别系统论文python_车牌识别系统的设计与实现毕业论文
  11. wordpress添加Auto Highslide图片灯箱效果
  12. Qt系列文章之 QAbstractItemModel(上)
  13. 用shapely判断两个图形的包含相交关系
  14. 【LTE】Qualcomm LTE Packets log 分析(三)LTE Access Stratum Log Analysis
  15. 小丸子学Redis系列之——Data types(一)
  16. 用map代替双重for循环,stream流代替双重for循环
  17. 一页PPT证明黎曼猜想?Michael Atiyah的正式演讲炸了锅
  18. 【问题解决】KeyError: ‘profit‘ raise KeyError(key) from err
  19. 超详细Docker容器化自动部署(纯手打)
  20. oracle pns配置,oracle笔记大全

热门文章

  1. deny后加to do还是doing_deny的用法总结大全
  2. Python语言:五角星制作
  3. 用excel AVERAGEIFS函数 计算各校各班学生成绩平均分,
  4. 如何更快的下载、更新你的ubuntu软件、源代码、驱动
  5. 小米手机打开之前打开的应用--完美实现步骤
  6. 【UEFI实战】Secure Boot
  7. 1.26 过去将来时 would+v. 状语从句
  8. 利用SSM开发的智慧校园系统(资产管理、竞赛管理、人员管理、权限分配)
  9. 微信小程序歌曲列表页实现
  10. 计算机java实训报告,计算机Java实训报告.doc