ImageView中XML屬性src和background的區別:android
今天改一個BUG,給一個Imageview設置圖片背景,在代碼中用imageView.setBackgroundResource(R.drawable.*)來設置圖片背景,可是一直沒有效果,後來排查發現是在這個ImageView的XML文件中設置了src屬性,刪除了,BUG就修復了。上網查了下緣由,在ide
http://uuton.com/post/3f493_1b8753中找到答案。post
ImageView中的background會根據ImageView組件給定的長寬進行拉伸,而src就存放的是原圖的大小,不會進行拉伸。src是圖片內容(前景),bg是背景,能夠同時使用。spa
此外:scaleType只對src起做用;bg可設置透明度,好比在ImageButton中就能夠用android:scaleType控制圖片的縮放方式,示例代碼以下:圖片
<ImageView android:id="@+id/img"
android:src="@drawable/logo"
android:scaleType="centerInside"
android:layout_width="60dip"
android:layout_height="60dip"
android:layout_centerVertical="true"/>ip
說明:centerInside表示按比例縮放圖片,使得圖片長 (寬)的小於等於視圖的相應維度。資源
注意:控制的圖片爲資源而不是背景,即android:src="@drawable/logo",而非android:background="@drawable/logo"。程序中動態加載圖片也相似,如:應該imgView.setImageResource(R.drawable.*);而非imgView.setBackgroundResource(R.drawable.*);it
附:更詳細的scaleType說明:程序
CENTER /center 在視圖中心顯示圖片,而且不縮放圖片im
CENTER_CROP / centerCrop 按比例縮放圖片,使得圖片長 (寬)的大於等於視圖的相應維度
CENTER_INSIDE / centerInside 按比例縮放圖片,使得圖片長 (寬)的小於等於視圖的相應維度
FIT_CENTER / fitCenter 按比例縮放圖片到視圖的最小邊,居中顯示
FIT_END / fitEnd 按比例縮放圖片到視圖的最小邊,顯示在視圖的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到視圖的最小邊,顯示在視圖的上部分位置
FIT_XY / fitXY 把圖片不按比例縮放到視圖的大小顯示
MATRIX / matrix 用矩陣來繪製