自定义View 之基础篇——获取控件宽高

本文详细探讨了自定义View中getMeasuredWidth()和getWidth()的区别,通过实例测试分析了两者在不同场景下的表现,特别是当控件大小超出屏幕时的情况。总结了它们在测量和布局阶段的值变化,并指出在RelativeLayout中控件大小受限于屏幕大小。
摘要由CSDN通过智能技术生成

1、getMeasuredHeight()/getMeasuredWidth() 与 getHeight()/getWidth()

getMeasuredHeight():获取控件实际高度,包括显示的部分和超出屏幕的部分。它的值与屏幕无关。

getHeight():获取控件在屏幕中显示的高度

getMeasuredWidth():与getMeasuredHeight()相似

getWidth():与getHeight()相似。

以下,以View宽为例做讲解。

(1)一般情况下getMeasuredWidthgetWidth方法的值是一致的。

(2)上述解释,针对的是“父布局为非相对布局”的情况。相对布局中,控件的最大值是屏幕大小,不会超过一屏,即使设的值是3000dp,也会自动把大小调为不超过屏幕大小。【下面会有测试】

2、使用

(1) getMeasuredWidth()

        setMeasuredDimension()之后,即可调用getMeasuredWidth()。所以网上说在onLayout()环节可以使用是对的。特殊地方:如果我们在重写onMeasure()时,继承了父类方法的onMeasure()——其内部执行了setMeasureDimension(),或者手动setMeasureDimension(),紧接着执行该方法,按道理来讲也是可以获取确切的值。

(2) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值