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.*);