先看不限定宽和高的情况
选择器:
<RadioGroup
android:layout_marginTop="10dp"
android:paddingLeft="8dp"
android:id="@+id/rg_green"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<RadioButton
android:drawablePadding="4dp"
android:gravity="center"
android:button="@null"
android:drawableBottom="@drawable/selector_radiobutton_bg"
android:checked="true"
android:text="选择"
android:id="@+id/rb_one_green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></RadioButton>
<RadioButton
android:drawablePadding="4dp"
android:gravity="center"
android:drawableBottom="@drawable/selector_radiobutton_bg"
android:button="@null"
android:layout_marginLeft="6dp"
android:text="不选择"
android:id="@+id/rb_two_green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></RadioButton>
</RadioGroup>
限定宽和高后(图片会显示不全)
<RadioGroup
android:layout_marginTop="10dp"
android:paddingLeft="8dp"
android:id="@+id/rg_green"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<RadioButton
android:drawablePadding="4dp"
android:gravity="center"
android:button="@null"
android:drawableBottom="@drawable/selector_radiobutton_bg"
android:checked="true"
android:text="选择"
android:id="@+id/rb_one_green"
android:layout_width="50dp"
android:layout_height="50dp"></RadioButton>
<RadioButton
android:drawablePadding="4dp"
android:gravity="center"
android:drawableBottom="@drawable/selector_radiobutton_bg"
android:button="@null"
android:layout_marginLeft="6dp"
android:text="不选择"
android:id="@+id/rb_two_green"
android:layout_width="50dp"
android:layout_height="50dp"></RadioButton>
</RadioGroup>
解决办法
1、把两个radioButton的长和宽设置成 wrap_content 去除drawable方向属性
2、创建一个radioButton的style
<style name="CompoundButtonThem.CustomRadioTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/selector_radiobutton_bg</item>
</style>
布局文件中使用这个style
然后定义一个方法
/**
*
* @param drawableId drawableLeft drawableTop drawableBottom 所用的选择器 通过R.drawable.xx 获得
* @param radioButton 需要限定图片大小的radioButton
*/
private void setBounds(int drawableId, RadioButton radioButton) {
//定义底部标签图片大小和位置
Drawable drawable_news = getResources().getDrawable(drawableId);
//当这个图片被绘制时,给他绑定一个矩形 ltrb规定这个矩形 (这里的长和宽写死了 自己可以可以修改成 形参传入)
drawable_news.setBounds(0, 0, 50, 50);
//设置图片在文字的哪个方向
radioButton.setCompoundDrawables(null,null,null, drawable_news);
}
效果