所有布局类(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等值与每个视图相关联。而且根本没有这些能力。abovebelowalightWithParentLinearLayout.LayoutParams
所以一般来说,你必须使用LayoutParamsfrom 封闭布局来使你的视图正确定位和渲染。但请注意,它们LayoutParams都有相同的父类ViewGroup.LayoutParams。而且,如果您只使用在该类中定义的功能(例如在您的情况下WRAP_CONTENT和FILL_PARENT),即使使用错误LayoutParams的类来指定布局参数,您也可以获得工作代码。