1. LinearLayout有LayoutParams,ViewGroup没有?
LinearLayout有自己的LayoutParams,并且继承 ViewGroup.MarginLayoutParams
2. LinearLayout有weight,RelativeLayout没有?
像权重 weight、gravity属性,都是 LinearLayout源码中单独定义的,RelativeLayout没有,就像 RelativeLayout有centerInParent、centerVertical等属性,是因为 RelativeLayout定义了,而LinearLayout没有定义。
3. ListView可以设置头布局和脚布局,RecyclerView不行?
因为ListView源码中定义了 HeaderViewListAdapter,所以可以设置,而RecyclerView中没有定义。
LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列”就是棋子的LayoutParams。
但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
1,一个确定的值;
2,FILL_PARENT,即填满(和父容器一样大小);
3,WRAP_CONTENT,即包裹住组件就好。