我的imagebutton所用的背景png圖片是灰色的,但是我想讓他顯示出來是白色的按鈕,如果用ps去一個個填充不太現實,那有沒有什么辦法去通過xml里的屬性改變背景顏色呢?
一開始我用了網上的方法
<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屬性,設置為白色,再將背景設為透明。
可是出現了右二按鈕的情況
然后我開始自己調試
<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:scaleType="centerInside"
這個的作用是 將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬
最后終於得到了我想要的結果
這樣就大功告成了!
最后附上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
用矩陣來繪制