你的位置:首页 > 软件开发 > 操作系统 > Android自定义ViewGroup

Android自定义ViewGroup

发布时间:2016-03-24 23:00:04
视图分类就两类,View和ViewGroup。ViewGroup是View的子类,ViewGroup可以包含所有的View(包括ViewGroup),View只能自我描绘,不能包含其他View。然而系统定义的ViewGroup毕竟功能有限,不能满足我们所有的需求,很简单的道理,别 ...

Android自定义ViewGroup

视图分类就两类,View和ViewGroup。ViewGroup是View的子类,ViewGroup可以包含所有的View(包括ViewGroup),View只能自我描绘,不能包含其他View。

然而系统定义的ViewGroup毕竟功能有限,不能满足我们所有的需求,很简单的道理,别人不可能为你考虑所有的细节。所以我们需要自定义ViewGroup。


一个非常简单的视图包含关系:ViewGroup1->ViewGroup2->…->ViewGroupi->…->ViewGroupn->View(->为包含)

其中包含了两个极为重要的流程:尺寸测量和位置摆放。尺寸测量完后再走位置摆放。

1、尺寸测量

View有一个尺寸测量方法onMeasure(int widthMeasureSpec, int heightMeasureSpec),这个方法负责设置自己的大小,以及发送建议的大小到他的children(如果他有的话)。

2、位置摆放

只有ViewGroup才有位置摆放一说。View有一个摆放方法onLayout(boolean changed, int left, int top, int right, int bottom),此方法负责摆放他的children的位置。


起码得有一个开头的ViewGroup,让其下发建议的大小下去到他的children里面。查看Activity源代码可以看到以下一个方法setContentView(View v):

@Overridepublic void setContentView(View v) {  ensureSubDecor();  ViewGroup contentParent = (ViewGroup) mSubDecor.findViewById(android.R.id.content);  contentParent.removeAllViews();  contentParent.addView(v);  mOriginalWindowCallback.onContentChanged();}

原标题:Android自定义ViewGroup

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录