咱们在上一篇文章中,经过两种方式解决了,子widget
相对父布局居左和居右。第二种方式是经过Row
中的MainAxisAlignment
属性实现的,代码很是简单,你们能够去上一篇文章中看看。这篇文章咱们将详细讲解MainAxisAlignment
这个属性里面值得含义,为何会能完成咱们上一篇的效果。固然这个属性不是Row
特有,Column
中也有,只不过Row
的主轴是水平方向上面的,Column
是竖直方向上的。MainAxisAlignment
属性就是表明主轴方向的对齐方式。本文咱们将以Row为例来说解,Columu
其实也是同样的意思,只不过方向不同。好的,下面咱们进入正题。git
MainAxisAlignment
里面一共有6个值,分别是start
,center
,end
,spaceBetween
,spaceAround
,spaceEvenly
;前三个相信你们很容易理解,咱们重点讲解后面三个值的效果。上一篇我已经留下这三个属性的源码注释了,不知道你们有没有理解,咱们再来看一次:github
// Place the free space evenly between the children. MainAxisAlignment.spaceBetween // Place the free space evenly between the children as well as half of that // space before and after the first and last child. MainAxisAlignment.spaceAround // Place the free space evenly between the children as well as before and // after the first and last child. MainAxisAlignment.spaceEvenly
像我这种英语菜鸡,貌似看上去每一个单词都认识,可是特么彻底不知道啥意思啊😂😂😂。只能看看翻译软件咋翻译的了,没办法,谁叫本身英语这门菜呢😭😭😭。ps:千万别用有道云翻译,根本不知道翻译的啥鬼意思。下面咱们看看Google翻译的结果:segmentfault
看过翻译以后,貌似明朗不少。而后咱们再配合代码的效果来理解这个属性,效果是这样的:布局
我分别演示了Row中包含2个,3个,4个子widget的效果,更有对比性,可让你们更好的理解这三个属性。下面咱们来一个个解释这些值的含义:spa
咱们先来看看spaceBetween
,源码注释给的意思是将自由空间均匀放置在孩子之间,配合咱们代码演示的效果。咱们能够知道spaceBetween
的做用应该是:翻译
widget
中,除去子widget所占据的空间,将剩余的空间均匀的分配在子widget
之间,因此咱们看到图上每一个widget
之间的空白部分是同样的。widget
之间,因此第一个子widge
的前面和最后一个字widget
后面是没有空间的,这是由于他们的左边和右边都是单独的。widget
的时候,这2个子widget
分别居左和居右,就是紧靠在父widget
两边的。因此到了这里,咱们应该就能很好的理解上一篇文章为何能实现那样的效果了吧。由于咱们只有2个子widget
,就是第3条所说的,因此就有了相对父widget
居左和居右的效果啦。设计
再来看看spaceAround
的将自由空间均匀地放置在孩子之间,以及在第一个孩子和最后一个孩子以前和以后的一半空间,我才开始我没太理解这句话的意思,后面配合代码演示的效果,我终于理解了spaceAround
的意思了。3d
widget
中,除去子widget
所占据的空间,将剩余的空间均匀的分配在子widget之间,且第一个子widget的左边和最后一个子widget
的右边也有均分分配空间的一半。spaceBetween
的区别就是,第一个子widget的左边和最后一个widget
的右边也有一半的空间。这种效果,我相信不少UI在做图的时候都喜欢用这种效果,多个view
之间空白均等,第一个和最后一个view离屏幕边缘是均等空白的通常。下次遇到这样的UI设计,就用spaceAround
就好啦😏😏😏。code
最后一个就是spaceEvenly
,意思是将自由空间均匀地放置在孩子之间以及第一个和最后一个孩子以前和以后,这个结合前面解释的俩个属性,和代码演示的效果,相信你们很容易就能理解。就是全部子widget
之间以及加上第一个子widget
的左边和最后一个子widget
的右边,均分剩余的空间。简单理解就是子widget
均分父widget
,这个就相似Android
中的LinearLayout
的weight
属性,给全部子view设置一样的比重,就是均等布局。之后遇到等比布局就能够使用spaceEvenly
啦😊😊😊。blog
经过对源码注释的解读,加上配合代码的效果,我相信你们应该理解了spaceBetween
,spaceAround
,spaceEvenly
这三个值的意思了,这样之后咱们再遇到不用的UI布局,使用Row
的布局将会更加驾轻就熟。再提醒一句,若是是在Column
在设置这几个值,就是在竖直方向均匀分配,相信你们也很容易理解,我就不演示了。
MainAxisAlignment
的讲解咱们就到这啦,若是文章有不对的地方,欢迎你们在评论中提出来,最后祝你们🐔你太美!!!