自定义RadioButton的(btn图片和Text的位置)

1.创建一个attrs.xml文件

   <?xml version="1.0" encoding="utf-8"?>
<resources>    
     <declare-styleable name="CompoundButton">
        <attr name="android:button" />
        <attr name="textColor" format="color"/>
        <attr name="textSize"  format="dimension"/>
        <attr name="text" format="string"/>
    </declare-styleable>
</resources>


2.继承RadioButton

public class MyRadioButton extends RadioButton {


    public MyRadioButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint=new TextPaint(Paint.ANTI_ALIAS_FLAG);
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CompoundButton, 0, 0);
        buttonDrawable = a.getDrawable(R.styleable.CompoundButton_android_button);
//        setButtonDrawable(android.R.id.empty);
        setButtonDrawable(android.R.color.transparent); 
        float textSize = a.getDimension(R.styleable.CompoundButton_textSize, 36);
        text=a.getString(R.styleable.CompoundButton_text);
        paint.density = getResources().getDisplayMetrics().density;
        paint.setTextSize(textSize);
        a.recycle();
    }
    Drawable buttonDrawable;
    TextPaint paint;
    String text;


     @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);


            if (buttonDrawable != null) {
                buttonDrawable.setState(getDrawableState());
                final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
                final int height = buttonDrawable.getIntrinsicHeight();
                int y = 0;
                switch (verticalGravity) {
                    case Gravity.BOTTOM:
                        y = getHeight() - height;
                        break;
                    case Gravity.CENTER_VERTICAL:
                        y = (getHeight() - height) / 2;
                        break;
                }
            int buttonWidth = buttonDrawable.getIntrinsicWidth();
            int textWidth=(int)paint.measureText(text);
            int buttonLeft = (getWidth() - buttonWidth-textWidth) / 2;
            buttonDrawable.setBounds(buttonLeft, y, buttonLeft+buttonWidth, y + height);
            buttonDrawable.draw(canvas);
            }
        }   
}


3.使用

    <com.vnetoo.xdmpstudent.tools.MyRadioButton
       android:layout_width="0dp"
       android:layout_weight="1"
       android:gravity="center"
        android:text="在线课程"
       vnetoo:text="在线课程"
       android:textSize="20sp"
       vnetoo:textSize="20sp"
       android:textColor="@color/black"
       vnetoo:textColor="@color/black"
       android:paddingLeft="20dp"
       style="@style/NowCourseButton"
       android:layout_height="match_parent"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值