项目中用到的一个小控件,自带的控件满足不了需求,只能自定义了。
直接看图片:
<com.yjy.yijinyi.view.DrawableCenterRadioButton
android:layout_marginTop="20dp"
android:id="@+id/dd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton"
android:textColor="@color/text_color"
android:button="@null"
android:drawableLeft="@drawable/selector_high_evaluation_radiobutton"
/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RadioButton"
android:textColor="@color/text_color"
android:gravity="center"
android:button="@null"
android:checked="true"
android:drawableLeft="@drawable/selector_high_evaluation_radiobutton"
/>
</LinearLayout>
然后就是java代码:
package com.yjy.yijinyi.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.RadioButton;
/**
* Created by 张先生 on 2016/1/22.
*
* 自定义RadioButton
*/
public class DrawableCenterRadioButton extends RadioButton {
public DrawableCenterRadioButton(Context context) {
super(context);
}
public DrawableCenterRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DrawableCenterRadioButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable[] drawables = getCompoundDrawables();
if (drawables != null) {
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;
canvas.translate((getWidth() - bodyWidth) / 2, 0);
}
}
super.onDraw(canvas);
}
}
直接粘贴复制就可以使用了,别忘了更换包名。