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

很多应用主界面都是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);


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








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值