在代码中设置RadioButton中图片大小

来源:互联网 发布:如何更换域名dns 编辑:程序博客网 时间:2024/05/22 03:28

很多应用主界面都是activity+fragement的方式,在底部或者顶部有几个按钮进行切换,布局可以写成RadioGroup包含RadioButton。在使用drawableTop时我们无法在布局中设置图片大小,这时候可以去代码中设置。

核心代码:

private void setRadioButtonImg() {        Drawable First = getResources().getDrawable(R.drawable.main_selector_book);        First.setBounds(0, 0,40 ,40);//参数从左到右依次是距左右边距离,距上下边距离,图片长度,图片宽度        mainData.rgMainListenbook.setCompoundDrawables(null, First, null, null);//mainData.rgMainListenbook是控件id        Drawable Second = getResources().getDrawable(R.drawable.main_selector_radiostation);        Second.setBounds(0, 0,40 ,40);        mainData.rgMainRadiostation.setCompoundDrawables(null, Second, null, null);        Drawable Three = getResources().getDrawable(R.drawable.main_selector_campaign);        Three.setBounds(0, 0,40 ,40);        mainData.rgMainCampaign.setCompoundDrawables(null, Three, null, null);        Drawable Four = getResources().getDrawable(R.drawable.main_selector_mine);        Four.setBounds(0, 0,40 ,40);        mainData.rgMainMine.setCompoundDrawables(null, Four, null, null);    }

如果在一个应用中不止一处需要设置大小,那每次这样写重复的部分就造成了代码冗余,为了多次使用方便,我把它写成了一个工具类,需要时直接调用即可。工具类如下:

public class RadioButtonImgUtil {    /**     *设置图片显示在控件的上方     */    private static void setCompoun(RadioButton button, Drawable drawable) {        button.setCompoundDrawables(null, drawable, null, null);//只放上面    }    /**     *传递图片资源,设置大小     */    private static Drawable getResouDrawable(Context context, int drawables,int size) {        Drawable drawable = context.getResources().getDrawable(drawables);        drawable.setBounds(0, 0, size, size);        return drawable;    }    public static void setRadioButtonImg(Context context,int[] drawables,int size,                                         RadioButton... radioButton) {        //drawable代表图片集合,size就是想设置的图片大小,radioButton这里代表控件集合        //可变形参必须放在参数列表最后面,否则系统将无法识别形参个数,参数列表中也不可以同时出现多个可变参数        for (int i = 0; i < radioButton.length; i++) {            setCompoun(radioButton[i], getResouDrawable(context, drawables[i],size));        }    }}

需要时这样使用:

  //资源集合,mipmap和selector都可以  int[] drawables = {R.drawable.main_selector_book,R.drawable.main_selector_radiostation,                R.drawable.main_selector_campaign,R.drawable.main_selector_mine};  RadioButtonImgUtil.setRadioButtonImg(this,drawables,40,mainData.rgMainListenbook, mainData.rgMainRadiostation, mainData.rgMainCampaign,mainData.rgMainMine);


希望能帮助到大家,若有问题可以留言(●'◡'●)








原创粉丝点击