Android 自定义CheckBox样式,设置切换背景图,类似于RadioButton

这篇具有很好参考价值的文章主要介绍了Android 自定义CheckBox样式,设置切换背景图,类似于RadioButton。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

目前要实现类似于Radiobutton选择按钮,如果只有一个RadioButton,就不能和radio Group连用,导致选择没办法取消,如果要实现只能代码中进行操作,过于繁琐。所以自己写了一个定义CheckBox样式,实现的效果和RadioBUtton样式一样,不过能够实现选择和取消,代码中直接实现监听即可,这样就方便使用了

自定义CheckBoX

具体实现代码如下:

public class CheckButton extends CheckBox {

    private Drawable drawableLeft;
    private int scaleWidth; //dp值
    private int scaleHeight;

    public CheckButton(Context context) {
        super(context);
    }

    public CheckButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);
    }

    public CheckButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs);
    }

    public void init(Context context, AttributeSet attrs) {
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ImageTextButton);

        drawableLeft = typedArray.getDrawable(R.styleable.ImageTextButton_leftDrawable);
        scaleWidth = typedArray.getDimensionPixelOffset(R.styleable
                .ImageTextButton_drawableWidth, 20);
        scaleHeight = typedArray.getDimensionPixelOffset(R.styleable
                .ImageTextButton_drawableHeight, 20);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        if (drawableLeft != null) {
            drawableLeft.setBounds(0, 0,scaleWidth, scaleHeight);
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        this.setCompoundDrawables(drawableLeft, null, null, null);
    }

    /**
     * 设置左侧图片并重绘
     * @param drawableLeft
     */
    public void setDrawableLeft(Drawable drawableLeft) {
        this.drawableLeft = drawableLeft;
        invalidate();
    }

    /**
     * 设置左侧图片并重绘
     * @param drawableLeftRes
     */
    public void setDrawableLeft(int drawableLeftRes) {
        this.drawableLeft = getContext().getResources().getDrawable(drawableLeftRes);
        invalidate();
    }
}

资源文件如下

放在res目录下的styles中

   <!-- ImageTextButton attrs-->
    <attr name="leftDrawable" format="reference"/>
    <attr name="drawableWidth" format="dimension"/>
    <attr name="drawableHeight" format="dimension"/>

    <declare-styleable name="ImageTextButton">
        <attr name="leftDrawable"/>
        <attr name="drawableWidth"/>
        <attr name="drawableHeight"/>
    </declare-styleable>

使用方法

直接在xml布局中引用CheckButton即可,代码如下


                        <com.CheckButton
                            android:id="@+id/tz_checkbox1"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textSize="15sp"
                            android:drawablePadding="5dp"
                            app:drawableWidth="20dp"
                            app:drawableHeight="20dp"
                            android:button="@null"
                            android:text="我是自定义CheckBox"
                            app:leftDrawable="@drawable/radion_select"/>

实现效果

android checkbox 自定义样式,Android基础,android

写到这里就大功告成!!!文章来源地址https://www.toymoban.com/news/detail-688159.html

到了这里,关于Android 自定义CheckBox样式,设置切换背景图,类似于RadioButton的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包