| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 安卓7大基本布局 -> 正文阅读 |
|
[移动开发]安卓7大基本布局 |
一:基础知识1.Android七大基本布局分别是:LinearLayout(线性布局)、TableLayout(表格布局)、RelativeLayout(相对布局)、FrameLayout(层布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)、ConstraintLayout(约束布局)。 2.七大基本布局的继承关系?上面这个类图只是说了六大基本布局的关系,当然ViewGroup还有其他一些布局管理器。 3.Android布局的XML关系图:二:布局介绍1.LinearLayout(线性布局)线性布局具有垂直方向与水平方向的布局方式,通过设置属性?“android:orientation”?控制方向,属性值:垂直(vertical)和水平(horizontal),默认水平方向。 android:gravity:内部控件对齐方式,常用属性值:center、center_vertical、center_horizontal、top、bottom、left、right等。android:gravity在布局组件 RelativeLayout、TableLayout 中也有使用,在 FrameLayout、AbsoluteLayout?则没有这个属性。 center:居中显示,这里并不是表示显示在?LinearLayout?的中心,当?LinearLayout?线性方向为垂直方向时,center?表示水平居中,但是并不能垂直居中,此时等同于 center_horizontal 的作用;同样当线性方向为水平方向时,center?表示垂直居中,等同于?center_vertical。top、bottom、left、right?顾名思义为内部控件居顶、低、左、右布局。 这里要与?android:layout_gravity?区分开,layout_gravity?是用来设置自身相对于父元素的布局。 android:layout_weight:权重,用来分配当前控件在剩余空间的大小。使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把?width?设置为零。 2.RelativeLayout(相对布局)相对布局可以让子控件相对于兄弟控件或父控件进行布局,可以设置子控件相对于兄弟控件 或父控件进行上下左右对齐。 RelativeLayout能替换一些嵌套视图,当我们用?LinearLayout?来实现一个简单的布局但又使用了过多的嵌套时,就可以考虑使用RelativeLayout重新布局。(过多嵌套会导致性能变差) RelativeLayout中子控件常用属性: 1、相对于父控件,例如:android:layout_alignParentTop=“true”
2、相对给定Id控件,例如:android:layout_above=“@id/**”
3、居中,例如:android:layout_centerInParent=“true”
3.FrameLayout(层布局)帧布局或叫层布局,从屏幕左上角按照层次堆叠方式布局,后面的控件覆盖前面的控件。 该布局在开发中设计地图经常用到,因为是按层次方式布局,我们需要实现层面显示的样式时就可以采用这种布局方式,在普通功能的软件设计中用得也不多。 4.AbsoluteLayout(绝对布局)绝对布局也叫坐标布局,指定控件的绝对位置,简单直接,直观性强,但是手机屏幕尺寸差别较大,适应性差,Android?1.5已弃用,可以用RelativeLayout替代。 5.TableLayout(表格布局)表格布局继承自LinearLayout,通过TableRow设置行,列数由TableRow中的子控件决定,直接在TableLayout中添加子控件会占据整个一行。 TableLayout常用属性:
列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。 子控件常用属性:
6.GridLayout(网格布局)android 4.0 后新增的一个布局,与前面介绍过的?TableLayout(表格布局) 其实有点大同小异,不过新增了一些新的功能: 1.跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式 2.容器中的组件可以跨多行也可以跨多列(相比?TableLayout?直接放组件,占一行相比较) 常用属性: 排列对齐:
设置布局为几行几列:
设置某个组件位于几行几列 注意:都是从0开始算的~~~
设置某个组件横跨几行几列以及填充:
7.ConstraintLayout(约束布局)传统的Android开发当中,界面基本都是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,我也一直都不推荐使用可视化的方式来编写Android应用程序的界面。而ConstraintLayout就是为了解决这一现状而出现的。它和传统编写界面的方式恰恰相反,ConstraintLayout非常适合使用可视化的方式来编写界面,但并不太适合使用XML的方式来进行编写。当然,可视化操作的背后仍然还是使用的XML代码来实现的,只不过这些代码是由Android Studio根据我们的操作自动生成的。另外,ConstraintLayout 还有一个优点,它可以有效地解决布局嵌套过多的问题。我们平时编写界面,复杂的布局总会伴随着多层的嵌套,而嵌套越多,程序的性能也就越差。ConstraintLayout则是使用约束的方式来指定各个控件的位置和关系的,它有点类似于 RelativeLayout,但远比RelativeLayout要更强大。 注意:ConstraintLayout 向下兼容到 API 9 常用特性:例如:app:layout_constraintTop_toBottomOf="@+id/***"
三:性能介绍以最常用的LinearLayout(线性布局)、RelativeLayout(相对布局)来举例子。 很简单就一句话:在简单布局可以用单层?LinearLayout?完成的布局我们可以选择?LinearLayout?进行布局,如果用单层?LinearLayout?完成不了而要嵌套的话,那么我们可以考虑用?RelativeLayout?来完成布局。 注意:当?LinearLayout 设置了 weight?的时候,会进行二次测量,在第二次测量的时候父视图会把剩余的宽度按照?weight?值的大小平均分配给相应的子视图,这样就会浪费性能了~~~所以尽量不要用吧~~~ 四:原理介绍 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:47:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |