大家可以回憶一下,當在LinearLayout中寫childView的時候,可以寫layout_gravity,layout_weight屬性;在RelativeLayout中的childView有layout_centerInParent屬性,卻沒有layout_gravity,layout_weight,這是為什么呢?這是因為每個ViewGroup需要指定一個LayoutParams,用於確定支持childView支持哪些屬性,比如LinearLayout指定LinearLayout.LayoutParams等。如果大家去看LinearLayout的源碼,會發現其內部定義了LinearLayout.LayoutParams,在此類中,你可以發現weight和gravity的身影。
如果在自定義的Viewgroup中 自定義了內部類LayoutParams 則必須重寫該方法
@Override
public
ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)
{
//返回自定義的LayoutParams
return
new
MarginLayoutParams(getContext(), attrs);
}
y以上內容轉載自 (自定義ViewGroup學習):http://www.2cto.com/kf/201408/322460.html