自定义ViewGroup 在ViewGroup中显示TextView.doc

自定义ViewGroup 在ViewGroup中显示TextView.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自定义ViewGroup 在ViewGroup中显示TextView

自定义ViewGroup 在ViewGroup中显示TextView 1、继承ViewGroup 必须要实现其构造方法和一个onLayout方法 构造函数的处理: public CusViewGroup(Context context) { this(context, null); } public CusViewGroup(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CusViewGroup(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } 注意构造函数中的this。自定义ViewGroup也能够有自己的属性,对于属性的操作和自定义View一致。(在Style中添加自定义属性,在构造函数中获取到layout中设置的自定义属性的值) onLayout(): 疑问:为什么必须要重写onLayout方法? –自定义ViewGroup 相当于是一个容器,里面能够放置很多View,这些View的位置由onLayout来确定。必须指定位置,才能显示到容器的对应位置上。 疑问:onLayout的几个参数是什么意思 l、t、r、b 是自定义ViewGroup父控件中设置的Padding 值。 2、自定义ViewGroup的执行过程 构造函数—–获取自定义属性 onMeasure—控件宽、高以及measure子控件 onLayout —–控件的位置,子View的位置 onDraw —— 画画咯 onMeasure: 自定义ViewGroup onMeasure代码 /** * 确定ViewGroup的宽高 * * @param widthMeasureSpec 宽参数 * @param heightMeasureSpec 高参数 */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //ViewGroup主要是一个容器,当ViewGroup的宽高是确切的值的时候,控件的宽高就是它本身设置的值 //主要是考虑ViewGroup Wrap_content的时,需要计算控件的宽高,控件的宽高根据子View的布局来计算 int width; int height; int mWidthMeasureMode = MeasureSpec.getMode(widthMeasureSpec); measureChildren(widthMeasureSpec, heightMeasureSpec);//初始化所有子View的宽高 if (mWidthMeasureMode == MeasureSpec.AT_MOST) {//Wrap_content的情况 //测量子View的宽 怎么测量子View的宽 //由于这里只有一个控件,暂时从这个一个控件开始学习 View childView = getChildAt(0);//获取到这个控件 width = childView.getMeasuredWidth(); } else { width = MeasureSpec.getSize(widthMeasureSpec); } int mHeightMeasureMode = MeasureSpec.getMode(heightMeasureSpec); if (mHeightMeasureMode == MeasureSpec.AT_MOST) { View childView = getChildAt(0); height = childView.getMeasuredHeight(); } else { height = MeasureSpec.getSize(heightMeasureSpec); } setMeasuredDimension(width, height); } 测试布局文件: com.tjstudy.cusviewgroupdemo.customerview.CusViewGroup android:layout_width=wrap_content android:layo

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档