Android的layout分析

Android有六种layout, framelayout,linearlayout, tablelayout, relativelayout等等 (http://developer.android.com/resources/tutorials/views/index.html)

1. 对于各个layout的一些属性,一直有些困惑。比如match_parent的parent是指什么; 顾名思义,它指明要填满父控件,看上去很简单。但在实际应用中你会发现,会有很多复杂的情况出现。举个例子,当一个linearlayout的两部分都是match_parent,那么这两个部分最终各占多少呢?当加上了layout_weight后呢?

没有深入研究过layout的实现代码。经过一段时间的观察,个人感觉可以把match_parent和wrap_content分别看成外扩和内拉弹簧。
拿match_parent来说,这种弹簧会让整个框在可能的情况下尽量向外fill剩余空间(当然它会和其它东西发生阻力,最终达到平衡);而wrap_content则相反,它会尽力地内缩,紧紧包裹住框内的东西。

2. layout可以看成外框(透明的),而textview之类的是框内的具体实物

3. 严格来讲,layout种类是无数的,比如StatusBarview就是对framelayout的扩展。layout本身是viewgroup,它框住众多的views.

你可能感兴趣的:(android,layout,扩展)