/** * 解决文字和drawableleft和文字一起时不居中。要设置 android:background="@null"android:button="@null" * @author zhousheng * */ public class MDMRadioButton extends RadioButton { public MDMRadioButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MDMRadioButton(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MDMRadioButton(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { //获取设置的图片 Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { //第一个是left Drawable drawableLeft = drawables[0]; if (drawableLeft != null) { //获取文字的宽度 float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; int y = getWidth(); canvas.translate((getWidth() - bodyWidth) / 2, 0); } } super.onDraw(canvas); } }
使用:
<com.maidoumi.merchant.widget.MDMRadioButton
android:id="@+id/rb_main_table"
style="@style/main_radiobtn_style"
android:checked="true"
android:drawableLeft="@drawable/ic_back"
android:text="@string/main_table" />
RadioButton解决文字和drawableleft和文字一起时不居中
原文:http://blog.csdn.net/zm_crazy/article/details/45270503