Android設定drawableTop圖片大小
阿新 • • 發佈:2019-02-16
在開發中我們經常用到TextView、Button、RadioButton這三個控制元件,很多時候我們需要文字和圖片一起出現,很多應用的底部的導航欄用RadioGroup來實現切換的功能,例如QQ等等,這時候我們要用RadioButton的drawableTop、drawableLeft、drawableRight、drawableBottom四個屬性值,來設定文字對應方向的圖片,但是卻沒有設定圖片大小的屬性值。
要想設定這些圖片的大小其實很簡單,我們要了解一下下面幾個方法:
- getCompoundDrawables() 該方法返回包含控制元件左,上,右,下四個位置的Drawable的陣列
- setBounds(left,top,right,bottom)指定drawable的邊界
- setCompoundDrawables(drawableLeft, drawableTop, drawableRight, drawableBottom)設定控制元件左,上,右,下四個位置的Drawable
Button、RadioButton其實都是TextView的子類,這三個方法都是TextView裡的方法
所以流程就是,我們首先拿到控制元件上面位置的drawable,然後給指定drawable的邊界,最後再把drawable設定進去
這個例子是一個RadioGroup裡有五個RadioButton,分別有drawableTop圖片
/**
* 設定底部按鈕
*/
public void initButton(){
for (int i = 0; i < radioIds.length; i++) {//迴圈
drawables = radioBtns[i].getCompoundDrawables();//通過RadioButton的getCompoundDrawables()方法,拿到圖片的drawables,分別是左上右下的圖片
switch (i) {//為每一個drawableTop設定屬性setBounds(left,top,right,bottom)
case 0 :
drawables[1].setBounds(0, 0, getResources().getDimensionPixelSize(R.dimen.x18),
getResources().getDimensionPixelSize(R.dimen.x24));
break;
case 1:
drawables[1].setBounds(0, 0, getResources().getDimensionPixelSize(R.dimen.x25),
getResources().getDimensionPixelSize(R.dimen.x25));
break;
case 2:
drawables[1].setBounds(0, 0, getResources().getDimensionPixelSize(R.dimen.x40),
getResources().getDimensionPixelSize(R.dimen.x25));
break;
case 3:
drawables[1].setBounds(0, 0, getResources().getDimensionPixelSize(R.dimen.x25),
getResources().getDimensionPixelSize(R.dimen.x25));
break;
case 4:
drawables[1].setBounds(0, 0, getResources().getDimensionPixelSize(R.dimen.x25),
getResources().getDimensionPixelSize(R.dimen.x25));
break;
default:
break;
}
radioBtns[i].setCompoundDrawables(drawables[0], drawables[1], drawables[2],
drawables[3]);//將改變了屬性的drawable再重新設定回去
}
radioBtns[0].setChecked(true);
}