刚刚碰到这个问题,误打误撞解决了,如果用ImageButton需要使用图片
如果引入的方式是 android:src="@drawable/index_start_sel"则会变成有正方形的白边
解决方法1:
使用background就可以
android:background="@drawable/index_start_sel" />
我查了一下src和background的区别
ImageView中XML属性src和background的区别:
background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。
此外: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"/>
说明:centerInside表示按比例缩放图片,使得图片长 (宽)的小于等于视图的相应维度。
注意:控制的图片为资源而不是背景,即android:src="@drawable/logo",而非android:background="@drawable/logo"。程序中动态加载图片也类似,如:应该imgView.setImageResource(R.drawable.*);而非imgView.setBackgroundResource(R.drawable.*);
原来src是前景图,background是背景图,在使用src的时候如果图片的边缘是透明的,那么会带有一层渲染,所以要去掉背景的影响或者直接用背景就行了
解决方法2
imageButton 使用透明图片:
在Android上有很多不规则按钮。如:
这个时候,我们如果想做成不规则按钮的话,第一步就是搞一张边缘透明的png图片,然后用src指定到他,这个时候我们会发现,还没有达到要的效果,还有图片周围还是有一层渲染。此时还要搞第二步:需要对ImageButton设置背景属性android:background="#00000000",就实现了不规则按钮的效果了。如图: