Android更改imagebutton为纯色方法

时间:2023-03-09 08:49:57
Android更改imagebutton为纯色方法

我的imagebutton所用的背景png图片是灰色的,但是我想让他显示出来是白色的按钮,如果用ps去一个个填充不太现实,那有没有什么办法去通过xml里的属性改变背景颜色呢?

Android更改imagebutton为纯色方法

一开始我用了网上的方法

    <ImageButton
android:tint="#fff"
android:layout_marginRight="20dp"
android:layout_marginTop="0dp"
android:id="@+id/message"
android:layout_centerVertical="true"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@color/transparent"
android:src="@drawable/message"
android:layout_toLeftOf="@id/account"/>

用了tint属性,设置为白色,再将背景设为透明。

可是出现了右二按钮的情况

Android更改imagebutton为纯色方法

然后我开始自己调试

 <ImageButton
android:tint="#fff"
android:layout_centerVertical="true"
android:id="@+id/account"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:background="@drawable/account"
android:src="@drawable/account" />

我将background和src同时使用背景图片

Android更改imagebutton为纯色方法

如图最后一个按钮,我发现白色按钮是出现了,可是却不是我想要的,他被放大了。

后来我又使用了

android:scaleType="centerInside"

这个的作用是 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽

最后终于得到了我想要的结果

Android更改imagebutton为纯色方法

这样就大功告成了!

最后附上scaletype的用法

ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType)。

android:scaleType是控制图片如何 resized/moved来匹对ImageView的size。

ImageView.ScaleType / android:scaleType值的意义区别:

CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示 
CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽) 
CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示 
FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置 
FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY  把图片 不按比例 扩大/缩小到View的大小显示 
MATRIX / matrix 用矩阵来绘制