安卓中layout_weight的使用

整理一下今天看到的layout_weight的使用:


第一个效果:

只有一个控件的时候,想要在控件中居中显示 :


父容器中:android:weightSum="2"

子控件:android:layout_weight="1"

两个属性声明之后,这样控件就能在父控件中居中显示了

安卓中layout_weight的使用_第1张图片

安卓中layout_weight的使用_第2张图片

----------------------------------------------------------------

普通的layout_weight使用:子控件声明0dp 然后按照weight进行分配


安卓中layout_weight的使用_第3张图片

安卓中layout_weight的使用_第4张图片


这样父控件就按照weight进行分配了 分别为1/6 ,  2/6  ,   3/6

--------------------------------------------------------------------

如果我们第一个TextView的layout_width声明为wrap_content的话 ,父控件会默认减去wrap_content占用的宽度 ,然后将剩下的宽度进行分配

安卓中layout_weight的使用_第5张图片



在分配的时候,父控件会减去wrap_content占用的宽度,然后将剩下的宽度进行分配

安卓中layout_weight的使用_第6张图片


--------------------------------------------------------------------------------------------------------------

如果同样的情况,第一个TextView的Layout_width改成0dp 会发生的效果是,第一个TextView的效果如图

安卓中layout_weight的使用_第7张图片

安卓中layout_weight的使用_第8张图片

居然没有对齐,----- 其实是对齐了 ,,因为子控件会根据父控件的基线去对齐, 在父控件中声明baseLineAligned = "false"即可

-------------------------------------------------------------------------------------------------------

安卓中layout_weight的使用_第9张图片安卓中layout_weight的使用_第10张图片



----------------------------------------------------------------------------------------

再如果我们把所有textView的宽度设为match_parent的时候会出现下面的情况

安卓中layout_weight的使用_第11张图片


为什么第三个不见了,因为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

你可能感兴趣的:(安卓中layout_weight的使用)