Android从零单排之获取ImageView的宽高为0?

在Android开发中,由于控件在onCreate和onResume时未完成绘制,直接获取ImageView的宽度和高度会得到0。本文分析了这个问题的原因,并提供了通过BitmapFactory、MeasureSpec和ViewTreeObserver.addOnGlobalLayoutListener等方法在运行时正确获取ImageView尺寸的解决方案。
摘要由CSDN通过智能技术生成

问题描述

    说起来我也够菜的!⊙﹏⊙b汗

    今天搞了一个关于图片的demo,想动态的改变一张图片的大小和margin值。但是在activity中获取imageview的宽度和高度的时候,总是0。哎,我tm就是搞不懂了,怎么能是0呢?

<span style="white-space:pre">	</span>imageView1 = (ImageView) findViewById(R.id.id_img1);
	int width = imageView1.getWidth();
	int height = imageView1.getHeight();

分析原因

    起初怀疑是我代码写的有问题,可能写错了,可是反复检查和实验了几次,还TM是0。蛋疼!后来上网一查,发现了新大陆了。

    在onCreate方法中,控件其实还没有画好,也就是说当onCreate方法执行完了之后,才开始绘制控件,所以在onCreate方法中获取width和height返回的值是0。但是我又想onResume方法是不是可以呢?后来发现还是不行!我自定义了ImageView,然后打印量log日志,发现果然是这样,onCreate和onResume方法执行完了之后,才开始执行控件的测量(onMeasure)和绘制(onDraw)方法。

    MyImageView.java---自定义ImageView类:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值