所有布局类(LinearLayout
,RelativeLayout
等)都扩展ViewGroup
.
该类ViewGroup
有两个静态内部类:LayoutParams
和MarginLayoutParams
. 而ViewGroup.MarginLayoutParams
实际上延伸ViewGroup.LayoutParams
。
有时布局类需要额外的布局信息才能与子视图相关联。为此,他们定义了他们的内部静态LayoutParams
类。例如,LinearLayout
有:
public class LinearLayout extends ViewGroup {
...
public static class LayoutParams extends ViewGroup.MarginLayoutParams {
...
}
}
同样的事情RelativeLayout
:
public class RelativeLayout extends ViewGroup {
...
public static class LayoutParams extends ViewGroup.MarginLayoutParams {
...
}
}
但是LinearLayout.LayoutParams
和RelativeLayout.LayoutParams
是完全不同的独立类。它们存储有关子视图的不同附加信息。
例如,LinearLayout.LayoutParams
可以将weight
值与每个视图关联,而RelativeLayout.LayoutParams
不能。与 相同:它可以将, ,RelativeLayout.LayoutParams
等值与每个视图相关联。而且根本没有这些能力。above
below
alightWithParent
LinearLayout.LayoutParams
所以一般来说,你必须使用LayoutParams
from 封闭布局来使你的视图正确定位和渲染。但请注意,它们LayoutParams
都有相同的父类ViewGroup.LayoutParams
。而且,如果您只使用在该类中定义的功能(例如在您的情况下WRAP_CONTENT
和FILL_PARENT
),即使使用错误LayoutParams
的类来指定布局参数,您也可以获得工作代码。