自定义View-----setVisibility

自定义View—–setVisibility

setVisibility 有三个参数
- VISIBLE 可见
- INVISIBLE 不可见
- GONE 不存在(虽然不存在,但是parent.getChildCount还是会算进去)

通常都是用来控制是否可见的,
如VISIBLE 可见
INVISIBLE、GONE 不可见
但是在自定义view里面有一些需要注意的
如果设置不可见,两个不同的参数会对测量有所影响
1. GONE 如果设置了gone,则不会调用onMeasure等方法,而是等VISIBLE的时候才调用onMeasure onLayout onDraw(各一次)方法
2. INVISIBLE 如果设置了INVISIBLE,则会调用onMeasure(3次,先两次,然后onlayout,然后再measure,再layout),onLayout(两次),但是在之后设为VISIBLE后,才会调用onDraw

对此得到一个经验

设置与控件大小的值,不能在onMeasur中进行,要在onLayout中进行,像先设置gone,在设置visible的情况,由于只调用了一次,所以这个时候还未测量出来。
但是有个解决方案就是在onMeasure方法的最后没进行设置
例如

        setMeasuredDimension(widthSpec, heightSpec);
        // 得到控件的中心点位置
        centerX = getMeasuredWidth() / 2;
        centerY = getMeasuredHeight() / 2;

当然, 还是觉得在onLayout中比较好,具体也是看设置什么值吧,我这里的center是与布局位置有关,所以放在onlayout中比较好


最后欢迎关注我的微信公众号:云端看大地
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值