ViewGroup和LayoutParams之间的关系


大家可以回忆一下,当在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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM