【android编程】 第三讲-Android布局管理器
android编程 第三讲 Android布局管理器
文章目录
- android编程 第三讲 Android布局管理器
- 约束布局管理器ConstraintLayout
- 线性布局管理器LinearLayout
- 表格布局管理器TableLayout
- 帧布局管理器FrameLayout
- 相对布局管理器RelativeLayout
- 题目记录
约束布局管理器ConstraintLayout
基于条件的布局允许你根据图层和它同级图层或者它的父图层的相应关系指定图层的位置和大小。通过CAConstraint类描述的关系被保存在子图层的constraints数组属性里面。
当使用约束布局的时候,你首先创建一个CAConstraintLayoutManager的实例,并把它设置为父图层的布局管理器。然后你通过实例化CAConstraint对象为子图层创建约束条件,并把这些约束条件通过使用addConstraint:方法添加到子图层的约束属性里面。每个CAConstraint实例封装了一个两个图层在同一轴上的几何关系。
同级层引用的名称,使用图层的name属性。特定的名称superlayer被使用来引用图层的父图层。
每个轴上面最多只能指定两个关系。如果你给图层的左边和右边都指定约束关系,那么图层的宽度就会不同。如果你给图层的左边和宽度指定约束关系,则图层的右边就会从根据父图层的frame移动。通常你一般只会指定单个边的约束条件,图层在同一个轴上面的大小将会作为第二个约束关系。
线性布局管理器LinearLayout
一、线性布局LinearLayout最常用的属性有:
1.android:orientation
设置布局管理器内组件的排列方式,可以设置为 horizontal (水平排列)、vertical (垂直排列)。
2.android:layout_width
设置布局管理器的宽度,可以设置为wrap_content(包裹大小)、match_parent(填充父控件)、指定大小(单位dp)。
3.android:layout_height
设置布局管理器的高度,可以设置为wrap_content(包裹大小)、match_parent(填充父控件)、指定大小(单位dp)。
4.android:gravity
设置布局管理器内组件的对齐方式,该属性值可设为 top(顶部对齐) 、bottom(底部对齐) 、left(左对齐) 、right(右对齐) 、center_vertical(垂直方向居中) 、 fill_vertical(垂直方向填充) 、 center_horizontal(水平方向居中) 、 fill_horizontal(水平方向填充) 、center(垂直与水平方向都居中) 、 fill (填充)、 clip_vertical(垂直方向裁剪) 、 clip_horizontal(水平方向裁剪) 。
注意:可同时指定多种对其方式的组合,中间用“|”连接,如下方代码设置对齐方式为 left|center_vertical 表示出现在屏幕左边且垂直居中
5.android:layout_gravity
设置view在其父view中的对其方式。 该属性值可设为 top(顶部对齐) 、bottom(底部对齐) 、left(左对齐) 、right(右对齐) 、center_vertical(垂直方向居中) 、 fill_vertical(垂直方向填充) 、 center_horizontal(水平方向居中) 、 fill_horizontal(水平方向填充) 、center(垂直与水平方向都居中) 、 fill (填充)、 clip_vertical(垂直方向裁剪) 、 clip_horizontal(水平方向裁剪) 。
6.android:padding
设置元素与边框之间的距离(外间距),这是一次设置四个方向。单独设置某个方向有另外四个属性分别是android:paddingTop(元素的上面)、android:paddingBottom(元素的下面)、android:paddingLeft(元素的左边)、android:paddingRight(元素的右边)。
7.android:layout_margin
设置相对于父控件之间的距离(内间距),这是一次设置四个方向。单独设置某个方向有另外四个属性分别是android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft、android:layout_marginRight。
8.android:layout_weight
设置控件在父布局的比重,通过百分百比来进行布局。需要注意的是,使用weight需要将android:layout_width或者android:layout_height属性设置为0或0px,不这样设置可以与你想要的效果不一样。
9.android:background
设置控件的背景,可以是图片或者颜色。
表格布局管理器TableLayout
TableLayout布局中并不会为每一行、每一列或每个单元格绘制边框,每一行可以有0个或多个单元格,每个单元格为一个View对象。TableLayout中可以有空的单元格,单元格也可以像HTML中那样跨越多个列。
在TableLayout布局中,一个列的宽度由该列中最宽的那个单元格指定,而表格的宽度是由父容器指定的。在TableLayout中,可以为列设置三种属性:
- Shrinkable:如果一个列被标识为Shrinkable,则该列的宽度可以进行收缩,以使表格能够适应其父容器的大小。
- Stretchable:如果一个列被标识为Stretchable,则该列的宽度可以进行拉伸,以使填满表格中的空闲空间。
- Collapsed:如果一个列被标识为Collapsed,则该列会被隐藏。
注意:一个列可以同时具有Shrinkable属性和Stretchable属性,在这种情况下,该列的宽度将任意拉伸或收缩以适应父容器。
TableLayout继承自LinearLayout类,除了继承来自父类的属性和方法,TableLayout类中还包含表格布局所特有的属性和方法,如下表:
属性名称 | 对应方法 | 描述 |
---|---|---|
android:collapseColumns | setColumnCollapsed(int,boolean) | 设置指定列号的列属性为Collapsed |
android:shrinkColumns | setShrinkAllColumns(boolean) | 设置指定列号的列属性为Shrinkable |
android:stretchColumns | setStretchAllColumns(boolean) | 设置指定列号的列属性为Stretchable |
注意:TableLayout中所谓的列序号是从0开始计算的。setShrinkAllColumns和setStretchAllColumns实现的功能是将表格中的所有列设置为Shrinkable或Stretchable。
总结
有多少个TableRow对象就有多少行,
列数等于最多子控件的TableRow的列数
直接在TableLayout加控件,控件会占据一行
TableLayout属性(也叫全局属性):*代表所有列
android:shrinkColumns -------设置可收缩的列,(内容过多,则收缩,扩展到第二行,控件没布满TableLayout时不起作用)
android:stretchColumns ------设置可伸展的列,(有空白则填充)
列可以同时具备stretchColumns及shrinkColumns属性
android:collapseColumns ------设置要隐藏的列(索引列从0开始)
内部控件属性:
android:layout_column -------该单元格在第几列显示
android:layout_span -------该单元格占据列数,默认为1
参考链接https://www.cnblogs.com/tinyphp/p/3812486.html
帧布局管理器FrameLayout
帧布局或叫层布局,从屏幕左上角按照层次堆叠方式布局,后面的控件覆盖前面的控件。
常用属性:
属性 | 说明 |
---|---|
layout_gravity | 用来设置自身相对于父元素的布局,这个属性在FrameLayout布局时会经常使用到,用来控制控件在布局中的位置,layout_gravity常用属性值有top、bottom、left、right、center、center_horizontal、center_vertical,这里的center可以让控件居于FrameLayout的中心布局,属性值可以复合使用,比如我们既要居底部布局又要垂直居中就可以这样设置:“android:layout_gravity=bottom|center_vertical |
android:foreground表示:设置该帧布局容器的前景图像;
android:foregroundGravity表示:设置前景图像的显示位置;
foregroundGravity常用属性值及描述如下:
属性值 | 描述 |
---|---|
top | 将视图放到屏幕的顶端 |
Buttom | 将视图放到屏幕的底端 |
Left | 将视图放在屏幕的左侧 |
Right | 将视图放在屏幕的右侧 |
Center_vertical | 将视图按照垂直方向居中显示 |
horizontal_vertical | 将视图按照水平方向居中显示 |
前景图像是什么?
答:永远处于帧布局最上面,直接面对用户的图像,就是永远不会被覆盖的图像;
相对布局管理器RelativeLayout
相对布局常用属性:
子类控件相对子类控件:值是另外一个控件的id
android:layout_above----------位于给定DI控件之上
android:layout_below ----------位于给定DI控件之下
android:layout_toLeftOf -------位于给定控件左边
android:layout_toRightOf ------位于给定控件右边
android:layout_alignLeft -------左边与给定ID控件的左边对齐
android:layout_alignRight ------右边与给定ID控件的右边对齐
android:layout_alignTop -------上边与给定ID控件的上边对齐
android:layout_alignBottom ----底边与给定ID控件的底边对齐
android:layout_alignBaseline----对齐到控件基准线
android:layout_above="@id/xxx" --将控件置于给定ID控件之上
android:layout_below="@id/xxx" --将控件置于给定ID控件之下
android:layout_toLeftOf="@id/xxx" --将控件的右边缘和给定ID控件的左边缘对齐
android:layout_toRightOf="@id/xxx" --将控件的左边缘和给定ID控件的右边缘对齐
android:layout_alignLeft="@id/xxx" --将控件的左边缘和给定ID控件的左边缘对齐
android:layout_alignTop="@id/xxx" --将控件的上边缘和给定ID控件的上边缘对齐
android:layout_alignRight="@id/xxx" --将控件的右边缘和给定ID控件的右边缘对齐
android:layout_alignBottom="@id/xxx" --将控件的底边缘和给定ID控件的底边缘对齐
android:layout_alignParentLeft=“true” --将控件的左边缘和父控件的左边缘对齐
android:layout_alignParentTop=“true” --将控件的上边缘和父控件的上边缘对齐
android:layout_alignParentRight=“true” --将控件的右边缘和父控件的右边缘对齐
android:layout_alignParentBottom=“true” --将控件的底边缘和父控件的底边缘对齐
android:layout_centerInParent=“true” --将控件置于父控件的中心位置
android:layout_centerHorizontal=“true” --将控件置于水平方向的中心位置
android:layout_centerVertical=“true” --将控件置于垂直方向的中心位置
相对父容器,值是true或false
android:layout_alignParentLeft ------相对于父靠左
android:layout_alignParentTop-------相对于父靠上
android:layout_alignParentRight------相对于父靠右
android:layout_alignParentBottom —相对于父靠下
android:layout_centerInParent=“true” -------相对于父即垂直又水平居中
android:layout_centerHorizontal=“true” -----相对于父即水平居中
android:layout_centerVertical=“true” --------相对于父即处置居中
相对于父容器位置:
android:layout_margin=“10dp”
android:layout_marginLeft
android:layout_marginRight
android:layout_marginTop
android:layout_marginBottom
版本4.2以上相对布局新属性
android:layout_alignStart---------------------将控件对齐给定ID控件的头部
android:layout_alignEnd----------------------将控件对齐给定ID控件的尾部
android:layout_alignParentStart--------------将控件对齐到父控件的头部
android:layout_alignParentEnd---------------将控件对齐到父控件的尾部
android:layout_marginLeft指该控件距离边父控件的边距,
android:paddingLeft指该控件内部内容,如文本距离该控件的边距。
参考链接:https://blog.csdn.net/loongembedded/article/details/35569043
题目记录
- 线性布局管理器方向属性是 D
A.direction
B.trend
C.orention
D.orientation
- 对齐的属性是 B
- A.bring
- B.gravity1.00/1.00
- C.algin
- D.justify
- layout_width的含义是 D
- A.设置组件内容的宽度
- B.组件距原点的距离
- C.与父组件的宽度比例
- D.设置本组件的基本宽度
- 给线性布局设置颜色要使用 D
- A.paint属性
- B.RGB属性
- C.color属性
- D.background属性
- 表格布局的collapseColumnn属性 B
- A.可以让某些列失效
- B.可以让某些例不可见1.00/1.00
- C.可以删除某些列
- D.可以合并某些列
- 表格布局中允许某些列收缩的属性是: D
- A.contractColumn
- B.neckingColumn
- C. twitchColumn
- D.shrinkColumn
- 表格布局中允许某些列拉伸的属性是:C
- A.extendColumn
- B.tensionColumn
- C.stretchColumn1.00/1.00
- D.expendColumn
- 给框架(帧)布局设置前景图像的属性是 D
- A.topImage
- B.frontImage
- C.firstImage
- D.foreground
- 框架(帧)布局的特点是 D
- A.会自动对齐到中心
- B.会忽略原点(左上角)
- C.多个帧会平铺布置
- D.后面的布局覆盖前面的
- 对于约束布局下列说明正确的是 B
- A.AndroidStudio创建项目无法同时创建约束布局
- B.约束布局是相对布局的改进版1.00/1.00
- C.是借鉴了WindowsPhone研发的
- D.约束布局只能用绝对的数值去调整组件位置
【android编程】 第三讲-Android布局管理器相关推荐
- Android UI详解之布局管理器(一)
Android UI详解之布局管理器 一.布局管理器 ①顶级父类View ②子类GroupView ③AbsoluteLayout.FrameLayout.LinearLayout.GridLayou ...
- Android中常见五种布局管理器——RelativeLayout、LinearLayout、FrameLayout、TableLayout、GridLayout
目录 布局管理器 RelativeLayout 常见属性 Relative的实践操作(实现软件更新界面) LinearLayout 常见属性 LinearLayout的实践操作(模范登录以及微信底部) ...
- Android中的6大布局管理器
文章目录 6大布局管理器详解 1. LinearLayout 线性布局管理器 2. TableLayout 表格布局管理器 3. GridLayout 网格布局管理器 ~~~~~~~~~~~~~~~~ ...
- Android精讲--界面编程2(布局管理器)
为什么需要布局管理器 为了更好地管理Android应用的用户界面里的各种组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常来说,推荐使 ...
- 疯狂Android讲义(二)——第二部分:第1组UI组件(布局管理器)
一.第1组UI组件:布局管理器 Android 的界面组件比较多,不利于掌握它们内在的关系.为了帮助读者更好地掌握Android界面组件的关系,本书将会把这些界面组件按照它们的关联分析,分为几组进行介 ...
- Android 布局管理器
布局管理器:控制组件是如何摆放的. 5种常用的布局管理器: RelativeLayout,相对布局管理器 LineraLayout,线性 FrameLayout,帧 TableLayout,表格 Gr ...
- 线性布局管理器LinearLayout
介绍 线性布局管理器是将放入其中的组件按照垂直或水平方向来布局,也就是控制放入其中的组件横向排列或纵向排列.其中,纵向排列的称为垂直线性布局管理器,如图 3.16 所示:横向排列的称为水平线性布局管理 ...
- Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
最新文章
- Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署
- 组建校园网计算机网络设计,小型校园网的设计与组建Word版
- 在SAP Commerce里用SQL查询产品主数据
- AcWing进阶算法课Level-4 第六章 搜索 (模拟退火,爬山)
- 奥图码投影连接服务器没信号,奥图码投影机常见故障维修步骤
- ubuntu系统为firefox浏览器安装flash插件
- 逆向之制作扫雷外挂——003
- 四轴mpu6050姿态角卡尔曼滤波代码分析
- 无盘服务器吃鸡卡,无盘新手必备知识
- 文件被清理了怎么恢复
- 笔记本连接显示器没有声音解决方法
- 搭建在线视频网站,怎么弄?
- 微信开发者工具配置连接Gitee
- Excel2019将下面空白单元格填充的和上面值一样
- 埃森哲java笔试题_埃森哲的笔试经验
- Unicode 字符串逆序
- 百事公司携手深圳市营养学会推广“全谷物”营养
- 网络调度框架Retrofit2的使用与原理解析
- apxs编译php.so,PHP编译安装报错Sorry, I cannot run apxs.
- 智联,拉钩,boss直聘,三款互联网招聘应用竞品分析
热门文章
- Linux系统应用第三章Vim常见命令及快捷键
- 局域网镜像/屏幕共享/文件传输方案(MirrorCast/RTSP/RTP/RTCP/RTC/WebRTC/RTMP)
- 使用VC2005编译真正的静态Qt程序-Qt中文论坛-夏威夷雪人
- 图像滤镜艺术---图像光照效果滤镜
- pdfjs 参数_pdf.js实战,含水印、电子签章解决方案
- 你还在为你的妹子奋斗么
- [安装] DNT源码安装QA
- Django图片显示问题
- 【第一步】iOS开发环境搭建
- linux系统怎么安装爱奇艺_在deepin系统下使用vek来安装爱奇艺PC客户端