解决重写View时view的大小总是充满整个父布局

在开发自定义AnimateLabel控件时遇到问题,重写的View默认填充整个父布局,即使绘制区域正确。通过getLeft()和getTop()获取位置,但无法直接设置View大小。解决关键在于正确实现onMeasure(), onDraw()和onLayout()方法。" 132968813,20036787,Apache Calcite与Flink集成:SQL解析与语法扩展实践,"['SQL', 'Flink', '数据处理', '开源框架', '计算优化']
摘要由CSDN通过智能技术生成

           今天在做一个AnimateLabel的自定义控件时,出现了一个很奇怪的问题,

       重写的View在展示时,大小总是占整个父布局的大小

       虽然画出来的区域是正确的。

       通过getLeft()和getTop()来获取View左上角的位置,以便于绘制view。

       但是没有直接的像setWidth setHeight这样直观的函数来设置View 的大小。本以为直接把大小都设置成wrap_content的就可以解决问题了,但是发现显然是不成的。

       解决办法就是:

     

@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(this.viewWidth,this.viewHeight);
    }
    看到这个解决办法我觉得自己好傻,怎么就没想到这个呢?看来还是对View的流程还不是很清楚。所以再这里复习下View 的创建流程:

    onMeasure

    onDraw

    onLayout

   请参照:http://www.tuicool.com/articles/iy2yMr
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值