1. 程式人生 > >Android設定drawableTop圖片大小

Android設定drawableTop圖片大小

在開發中我們經常用到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); }