ConstraintLayout 想说爱你不容易!
ConstraintLayout 约束布局 的发布已经很长时间了,小菜用的比较少,测试时看到同事用的 ConstraintLayout 布局方式编辑的 xml,觉得有必要学习一下,并记录一下小菜在学习过程中遇到的小问题。
小菜理解的约束布局是相对布局的升级版,相对位置,更依赖于其他控件位置,关联性更强。
小菜的测试小结如下:
- 命名空间需要用 xmlns:app="http://schemas.android.com/apk/res-auto" 类似于自定义属性效果;如果只是随意添加一个控件,而不做任何操作,会提示如下:
- 控件的居中与对齐方式,约束布局中并没有类似于 LinearLayout/RelativeLatout 可以直接设置居中的属性,需要关联周围的布局,相互约束,例如:
<LinearLayout android:id="@+id/linearLayout" android:layout_width="0dp" android:layout_height="100dp" android:orientation="horizontal" android:padding="6dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" />
Tips:
2.1 约束布局中建议每个控件都设置 id,这样在互相关联约束中会更便捷;没有设置 id 时,若关联父类布局控件关联 id 为 parent:如 app:layout_constraintLeft_toLeftOf="parent",若关联同级布局控件,AndroidStudio 会自动在关联控件中添加默认 id,如 app:layout_constraintLeft_toLeftOf="@id/test_left_lay";
2.2 小菜对于这种关联方式 app:layout_constraintLeft_toLeftOf="parent" 的方便理解可以作为拆分理解,如图:
2.3 约束布局的关联性很强,如果【控件 B】的位置时根据【控件 A】的位置关联设置的,那么鼠标滑动调整【控件 A】的位置,【控件 B】的位置也会共同移动,如图:
- 在 Design 模式下点击任意一个控件,可看到有几个可操作的快捷方式:
第三个:控件左下角带箭头的红×,点击即可清空本控件与其他控件的关联关系,并在 xml 中自动添加一个绝对位置的坐标:
tools:layout_editor_absoluteX="142dp" tools:layout_editor_absoluteY="501dp"
-
控件相对于布局的比例/权重,这个就像第二条中居中对齐的功能,如图,控件左侧距左边框长度 与 控件右侧距右边框长度 即图中 x/y 的比例即为相对于布局的水平权重: app:layout_constraintHorizontal_bias="0.3";控件顶部距上边框长度 与 控件底部距下边框长度 即图中 a/b 的比例即为相对于布局的垂直权重:app:layout_constraintVertical_bias="0.273";当为 0.5 时即为居中;
- 自身控件的比例,这也是小菜最喜欢的属性,根据 app:layout_constraintDimensionRatio="4:3" 即可设置自身的的比例,即长度/高度,对于图片的各种比例设置会非常的方便,注意,使用该属性时,控件宽度可固定或 wrap_content,高度则应设为 0dp,若高度设为 wrap_content,则该属性不起作用,如图:
Tips:
小菜对这个布局很不熟悉,学习测试过程中也是各种尝试,七零八散的,仅记录一下小菜觉得很有意思的地方。
小菜认为,约束布局更适合直接将控件拖拽进布局然后进行大致设置位置,然后再对具体的控件进行样式位置的具体调整,适合页面布局相对简单的页面,例如登录注册等。
同时,约束布局有太多的东西需要学习和挖掘,熟练应用会对于布局方面的优化会有很大帮助。
很多看起来很细小的问题有时候也很值得研究,下面的是小菜的公众号,欢迎闲来吐槽哦~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Window 编译Openssl
1). 安装NDK 2). openssl-android 3). 修改版本 进入openssl-android目录,修改AndroidManifest.xml, 这里我用的是16,因此修改为16 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openssl.android" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="16" /> </manifest> default.properties文件修改 target=android-10 4). 修改Application.mk 进入jni文件夹,将内容修改为 NDK_TOOLCHAIN_VERSION=4.9 APP_PROJECT_PATH := $(shell pwd)...
- 下一篇
《现代前端技术解析》读后鬼扯
别名:前端工程师培养大纲 评分:4星 作者:张成文 GitHub:https://github.com/ouvens/ 豆瓣:https://book.douban.com/subject/27021790/ 本书就像它前言中提到的那样,是一本以现代前端技术思想与理论为主要内容的书,类似于大学刚入学发的那本专业培养大纲,总结和梳理了整个前端开发体系,让我们站在一个全局的角度去看待前端这个领域,展示了可供我们深入探索的各个方向。 这类书籍写起来不容易,没把握好很容易就变成博客合集。这本书到底怎么样,见仁见智吧。书中很多原理的讲解都附有代码,不是很复杂,仔细揣摩下都能懂,作者确实是费了些心思的。个人感觉不足的地方有几点,第一个就是对前端构建的工具介绍的不多,我们常见的webpack,gulp等都没怎么提及,另一个是对MVV*模式介绍的过于简单,React Native,weex都没留下只言片语。前端技术发展日新月异,各种工具框架层出不穷,争奇斗艳,让我们这些搞前端的眼花缭乱,真心有些学不动的感觉。 作者的GitHub上有一张 前端知识导图, 一定要看,一定要看,一定要看,重要的事情说三遍。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作