android中,如果使用imageButton可以在drawable 中設置一個selector,但是imageView設置不起作用,只要把Imageview的src給去掉就成了,src捕獲了background本應獲得焦點導致,具體原因可查看這兩者的區別。
- <ImageView
- android:id="@+id/mute_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:background="@drawable/ic_mute_selector"
- android:clickable="true"
- android:contentDescription="@string/app_name"
- android:src="@null" />
ImageView有兩個顯示圖片的屬性,作用分別是什麼呢?
-
src
-
background
如果兩個屬性同時存在,用戶會看到 src 屬性中設置的背景. 但同時 background 設置的背景也存在, 只是被 src 屬性擋住了,在後面. src 等於是前景, background 等於是背景.
怎麼用 java 代碼來動態改變這兩種屬性的值?
//src :
imageView.setImageDrawable(this.getResources().getDrawable((R.drawable.ic_launcher)));
//background :
imageView.setBackgroundResource(android.R.color.background_dark);
ImageView 中 XML 屬性 src 和 background 的區別:
background 會根據 ImageView 組件給定的長寬進行拉伸, 而 src 就存放的是原圖的大小, 不會進行拉伸。src 是圖片內容(前景),background是背景, 可以同時使用。
此外: scaleType 只對 src 起作用;background 可設置透明度, 比如在 ImageView 中就可以用 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"/>
說明: centerInside 表示按比例縮放圖片, 使得圖片長 (寬)的小於等於視圖的相應維度。
注意: 控制的圖片爲資源而不是背景.
layout 中設置應該: android:src=”@drawable/logo”
而不是 android:background=”@drawable/logo”
代碼設置應該是: imgView.setImageResource(R.drawable.*);
而不是 imgView.setBackgroundResource(R.drawable.*);