第一种:在代码中修改。
第一步:设置布局,找到RadioButton控件
setContentView(R.layout.activity_main);
RadioButton rb=(RadioButton)findViewById(R.id.rb);
第二步:找到你要设置大小的图片资源
Drawable drawable = getResources().getDrawable(R.drawable.img_rb);//找到图片
drawable.setBounds(0, 0, 60, 60);//最关键的一步,给图片设置大小,4个参数分别是左上右下,我看好多人对这个左上右下不理解,看下源码
rb.setCompoundDrawables(null, drawable, null, null);
++++++++++++++++++++++源码++++++++++++++++++++++++++++++++++++++++++++++++++
/**
* Specify a bounding rectangle for the Drawable. This is where the drawable
* will draw when its draw() method is called.
* 这句话的意思是说:指定一个可拉边界的矩形。
* ok,就是说给图片一个矩形,起始大小都为0,我们分别指定图片右边、图片下边距离矩形左边和上边的大小,这不就是图片的大小了嘛
*/
public void setBounds(int left, int top, int right, int bottom) {
Rect oldBounds = mBounds;
if (oldBounds == ZERO_BOUNDS_RECT) {
oldBounds = mBounds = new Rect();
}
if (oldBounds.left != left || oldBounds.top != top ||
oldBounds.right != right || oldBounds.bottom != bottom) {
if (!oldBounds.isEmpty()) {
// first invalidate the previous bounds
invalidateSelf();
}
mBounds.set(left, top, right, bottom);
onBoundsChange(mBounds);
}
}
++++++++++++++++++++++++源码++++++++++++++++++++++++++++++++++++++++++++++++
第二种:自定义一个MyRadioButton。原理跟第一种是一样的,直接上代码吧。
第一步:在attrs文件夹下面定义一个图片引用的属性
第二步:定义一个MyRadioButton类,继承原生的RadioButton
public class MyRadioButton extends RadioButton {
private Drawable drawable;
public MyRadioButton(Context context) {
super(context);
}
public MyRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyRadioButton);//获取我们定义的属性
drawable = typedArray.getDrawable(R.styleable.MyRadioButton_drawableTop);
drawable.setBounds(0, 0, 60, 60);
setCompoundDrawables(null, drawable, null, null);
}
}
第三步:xml中使用它:
android:id="@+id/rb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="哈哈1"
attr:drawableTop="@drawable/单个图片或者选择器图片" />
android:id="@+id/rb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="哈哈2"
attr:drawableTop="@drawable/-----" />
android:id="@+id/rb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="哈哈3"
attr:drawableTop="@drawable/----" />
运行:完美!
需要主意的是:要是在RadioGroup中默认选中第几个,但是点击后不互斥,这是因为没有给RadioButton写id。