想看我更多文章:【张旭童的博客】blog.csdn.net/zxt0601
想来gayhub和我gaygayup:【mcxtzhang的Github主页】github.com/mcxtzhang前端
昨儿写了一篇全文字和JPG、无Gif的博文ConstraintLayout 属性详解 和Chain的使用,
主要详解了ConstraintLayout
的全部属性,
可是有朋友问Chain
是如何经过可视化的方式去添加,
因而便有了此文。git
可是只讲解Chain
又显得太单薄,
因而我又加入了一个用ConstraintLayout
实现商品详情、Item布局的实例。
废话少说,开整:github
Chain
图文步骤假设咱们要须要构建 竖直的链条。app
第一步,先拖三个Button竖直排列。
能够看到在“Design”区域,除了位置,咱们还能够调整控件的大小。
ide
Ctrl + A
全选控件。
第三步,右键
->Center Vertically
.
链条已经构成了。
工具
左对齐
-
居中
-
右对齐
。
spread
-
spread_inside
-
packed
。
talking is cheap。让咱们一块儿实战一波,先看一个设计稿:布局
ConstraintLayout
,咱们通常会经过嵌套
LinearLayout
或者使用
RelativeLayout
去实现它。
LinearLayout
确定是低效的low方式,咱们不提。
RelativeLayout
实现起这种布局是很烦心的,
below rightOf
...
RelativeLayout
若是要实现几个
TextSize
不同
TextView
居中对齐是挺麻烦的。 虽然这个设计稿上没有出现这种case。而如今能够经过
Chain
的
Align
轻松实现它。)
DuangDuangDuangDuang,如今ConstraintLayout
横空出世,让咱们用拖拖拽拽点点的方式来轻松实现它吧。post
第一步,去xml修改父布局宽高为WRAP_CONTENT
第二步,拖拽一个ImageView,并按设计稿设置尺寸,布局在父控件顶端测试
TextView
间距大概
5dp
,能够经过
Inspector
区域设置:
第七步, 布局 购物车 加减按钮
购物车按钮使用的是一个自定义View。
因此这一小节也顺便讲解如何在ConstraintLayout
中拖拽使用自定义View。
关于这个购物车控件,我以前写过相关博文,github地址:github.com/mcxtzhang/A…flex
Pallete
区域点击
Advanced
->
view
,而后拖动至布局区域后,会弹出弹框让咱们选择,咱们搜索AnimShopButton(自定义View的名称)便可。
第九步,使底部三个TextView竖直居中
这一步是我强加的戏,为了展现Chain的做用。
我把底部的几个控件连接成Chain,而且改变了使它们竖直方向也相对居中。
这时界面忽然收缩了,显然是约束哪里出了问题。
因而咱们切换到Text
页面,查看代码具体哪里出了问题,
定位到价格TextView后,
检查约束,
若是是咱们本身手写约束,app:layout_constraintVertical_bias="1.0"
应该不会被写下来,
这一条约束应该是和父控件的WRAP_CONTENT
一块儿,致使布局收缩了。
删掉该条约束,界面预览正常。
第十步,在根布局外面套一层CardView,运行
运行后效果:
能够看出,ConstraintLayout
中Chain
的概念,和前端JS中flex
布局是同样的。
若是有ReactNative
或者前端经验的童鞋应该一眼能够看出。或者更适应这种布局方式。
使用ConstraintLayout
去完成布局,经历短暂的不习惯后,上手后速度仍是挺快的,
相比较RelativeLayout
它有 可拖拽、可视化的优点,以及轻松完成一些RelativeLayout
不太方便完成的布局。
仍是推荐你们去使用它的。
文中代码地址在个人Demo合集中:
github.com/mcxtzhang/D…
想看我更多文章:【张旭童的博客】blog.csdn.net/zxt0601
想来gayhub和我gaygayup:【mcxtzhang的Github主页】github.com/mcxtzhang