Android Layout机制研究
2010-05-10 19:50:00 来源:WEB开发网核心提示:Layout进行measure调用,在实现Layout的layout方法的时候,Android Layout机制研究(3),则要先对各个子View或者Layout进行layout调用,然后才是对Layout本身根据Layout本身的性质和Layout中各个View的属性来进行排布,它也有赖于用户的正确使用,逻辑不通的,
Layout进行measure调用。在实现Layout的layout方法的时候,则要先对各个子View或者Layout进行layout调用,然后才是对Layout本身根据Layout本身的性质和Layout中各个View的属性来进行排布。这样做的目的是先排布子节点,获得子节点的大小(逐层递归调用下去,最后达到View子节点的时候就全部确定了,然后逐层递归返回,上层节点也都确定了measuredWidth和
measuredHeight)。
最后有一点要说明的就是Layout在排布它的子View或者Layout的时候,由于自己的大小还没有确定,所以有些View的layout属性即使设置了,也是要忽略的。比如Android文档上提到:如果你对RelativeLayout的layout_width设置为WRAP_CONTENT,而对它下面的一个View设置了属性layout_alignParentRight为true,这就是冲突的情况。所以用户在使用这些layout属性之前,首先要确保它们逻辑上都是行的通的,然后才能期望Layout机制能够正确的起作用。
当然Android的真实实现过程当然比上面的描述的要复杂的多,但是通过Eclipse上 Android插件反复的试验,也可以看出Android的实现也并非是完美无瑕的,它也有赖于用户的正确使用。逻辑不通的,相互冲突的layout属性也会使它的行为难以预测。
更多精彩
赞助商链接