初学者一定会遇到ImageView和ImageButton的选择问题,小博老师来大家一起探究一下它们两者的区别。
项目中使用到了ImageButton,但是给图片设置具体尺寸后发现还是原来的大小,后来将ImageButton变成ImageView就可以了。首先我们从源码的角度来看一下两者的区别。
我们来分析一下几种不同情况下两者之间的差别。
1、两者均不设置具体的宽高。
其显示效果没有什么差别。
2、设置了具体的宽高。
ImageView会按照具体的宽高尺寸发生变化,但是ImageButton只会显示图片的原始像素大小。如果给ImageButton设置了scaleType属性就可以达成ImageView的效果,但是图片会失真。
3、设置背景选择器。
ImageView要想使选择器效果生效,需要让控件获得焦点。需要加上:android:clickable=true;
ImageButton就不需要处理,因为在源码中ImageButton的构造函数中已经设置过了setFocusable(true)。
4、设置background无具体宽高。
效果一样。
5、设置background有具体宽高。
效果一样。与src不同的是,两者均随着具体宽高发生改变。