需求&起因
有時候沒有找到合適大小的資源,需要修改圖片大小而且不改變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的大小即可。