ViewGroup自定义学习

这几天要做个界面,需要用到自定义VIewGroup,从来没有自定义过View,真是遇到了一大堆问题,在此记录,欢迎指正批评交流。

首先,查看了许多资料说是要重写onMeasure(),onLayout(); 云云的,还看到许多代码,其实差不多都挺全了,看了下源码,其实大部分都有,但是还是想写一下自己的经验吧。

在onMeasure(),用来测量各种控件的大小的。在onMeasure之后,view才有大小,才能获得getMeasureHeight()以及getMeasureWidth();这两个表示测量出来的宽高,跟getWidth()有差别,但是具体什么时候不一样我还不清楚。

当不需要自己测量viewGroup的width和height,只需要调用super.onMeasuer(widthMeasureSpec, heightMeasureSpec)即可。如果有特殊需求,可以自己调用measureChild方法一个一个去测量。(代码过几天贴)

如果自己想要测量的话:一定不能忘记 setMeasuredDimension(measuredHeight, measuredWidth);这个用于储存计算出来的宽高,不写会报错的。

当需要测量viewGroup的子控件的时候,没有特殊要求只需要调用:measureChildren就好,这个方法自己会遍历该viewGroup的所有子view,一一测量。

要测量wrap_content 的时候可以这样:MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);

更多内容慢慢写来,困了 休息了,明天继续 欢迎批评指正。







Android自定义ViewGroup是指在Android开发中,通过继承ViewGroup类来创建自定义的布局容器。自定义ViewGroup可以用于实现一些特殊的布局效果,比如侧滑菜单、滑动卡片等等。通过自定义ViewGroup,我们可以更灵活地控制子视图的布局和交互行为,以满足特定的需求。自定义ViewGroup的实现主要包括重写onMeasure()方法和onLayout()方法,来测量和布局子视图。同时,我们还可以通过重写onInterceptTouchEvent()方法和onTouchEvent()方法来处理触摸事件,实现自定义的交互效果。如果你对自定义ViewGroup还不是很了解,或者正想学习如何自定义,可以参考相关的教程和文档,如引用\[1\]和引用\[2\]所提到的博客和官方文档。 #### 引用[.reference_title] - *1* [Android 手把手教您自定义ViewGroup(一)](https://blog.csdn.net/iteye_563/article/details/82601716)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用LayoutParams自定义安卓ViewGroup](https://blog.csdn.net/lfq88/article/details/127268493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android自定义ViewGroup](https://blog.csdn.net/farsight2009/article/details/62046643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值