整理一下今天看到的layout_weight的使用:
第一个效果:
只有一个控件的时候,想要在控件中居中显示 :
父容器中:android:weightSum="2"
子控件:android:layout_weight="1"
两个属性声明之后,这样控件就能在父控件中居中显示了
----------------------------------------------------------------
普通的layout_weight使用:子控件声明0dp 然后按照weight进行分配
这样父控件就按照weight进行分配了 分别为1/6 , 2/6 , 3/6
--------------------------------------------------------------------
如果我们第一个TextView的layout_width声明为wrap_content的话 ,父控件会默认减去wrap_content占用的宽度 ,然后将剩下的宽度进行分配
在分配的时候,父控件会减去wrap_content占用的宽度,然后将剩下的宽度进行分配
--------------------------------------------------------------------------------------------------------------
如果同样的情况,第一个TextView的Layout_width改成0dp 会发生的效果是,第一个TextView的效果如图
居然没有对齐,----- 其实是对齐了 ,,因为子控件会根据父控件的基线去对齐, 在父控件中声明baseLineAligned = "false"即可
-------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
再如果我们把所有textView的宽度设为match_parent的时候会出现下面的情况
为什么第三个不见了,因为weight在计算的时候会先减去控件声明所占用的宽度,然后将剩余的宽度进行分配
假设屏幕宽度为480 那么 第一个TextView的宽度 480 第二个480 第三个 480
我们的weight会用屏幕宽度减去三个TextView的宽度
480 - 480*3 = -960 没错.是负的,
然后将这宽度进行分配,
第一个TextView占用的宽度:
480 -480*2 * 1/6
第二个
480 - 480*2 * 2/6
第三个
480 - 480*2* 3/6