需求&起因
有时候没有找到合适大小的资源,需要修改图片大小而且不改变ImageButton的大小。可以通过缩放图片大小的方式改变外观。
ImageView的属性android:scaleType也适用于ImageButton
ImageView的scaleType属性取值:matrix(默认), center, centerCrop, centerInside, fitCenter, fitEnd, fitStart, fitXY
大致分为两类:不改变原图尺寸;缩放原图尺寸
1、scaleType=“matrix”//不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。
2、scaleType=“Center”//不改变原图的大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像,超过部分裁剪。
3、scaleType=“centerCrop”//将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是ImageView的宽和高都要填满)。如果原图尺寸大于ImageView尺寸,超过部分裁剪。
4、scaleType=“centerInside”//将图片的内容完整居中显示,通过按比例缩放原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图居中显示。
5、scaleType=“fitXY”//把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView
6、scaleType=“fitStart”//把原图按比例缩放到ImageView的高度,与ImageView左边对齐
7、scaleType=“fitCenter”//把原图按比例缩放到ImageView的高度,居中显示
8、scaleType=“fitEnd”//把原图按比例缩放到ImageView的高度,与ImageView右边对齐
padding属性
控制内边距,paddingTop paddingBottom paddingStart paddingEnd 分别控制上下左右的边距
而ImageButton直接设置padding是没有效果的
实现
android:scaleType设置为 android:scaleType=“fitXY”
然后设置padding,调整padding的大小改变图片的尺寸,图片不保证原比例。
替代方案
可以用Layout和ImageView 替代ImageButton, 不用设置android:scaleType属性,直接设置ImageView的大小即可。