文档章节

android radioButton动态切换图片

 惊浪
发布于 2015/04/30 09:24
字数 309
阅读 2346
收藏 0

1、属性设置

在res/values/attrs.xml定义属性文件

<resources>
    <declare-styleable name="ImageRadioButton">
        <attr name="drawableSize" format="dimension"/>
        <attr name="drawableTop" format="reference"/>

</declare-styleable>
</resources>

2、LayOut xml配置文件

xmlns:attRadoi="http://schemas.android.com/apk/res/com.my.test.pro"

定义属性的命令空间,com.my.test.pro为工程的包定义

定义自定义的属性如下:

<com.my.test.pro.view.ImageRadioButton
            android:id="@+id/mytab_bt_test"
            style="@style/mytabground"
            android:text="TEST"
            attRadoi:drawableSize="28dp"
            attRadoi:drawableTop="@drawable/main_selector_test"
            android:drawableTop="@drawable/main_selector_test"
</com.my.test.pro.view.ImageRadioButton>

3、源码示例

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.RadioButton;

public class ImageRadioButton extends RadioButton {
    private int mDrawableSize;// xml文件中设置的大小

    public ImageRadioButton(Context context) {
        this(context, null, 0);
    }

    public ImageRadioButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ImageRadioButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        //Auto-generated constructor stub
        Drawable drawableLeft = null, drawableTop = null, drawableRight = null, drawableBottom = null;
        TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.ImageRadioButton);
        int n = a.getIndexCount();
        for (int i = 0; i < n; i++) {
            int attr = a.getIndex(i);
            Log.i("ImageRadioButton", "attr:" + attr);
            switch (attr) {
                case R.styleable.ImageRadioButton_drawableSize:
                    mDrawableSize = a.getDimensionPixelSize(R.styleable.ImageRadioButton_drawableSize, 50);
                    Log.i("ImageRadioButton", "mDrawableSize:" + mDrawableSize);
                    break;
                case R.styleable.ImageRadioButton_drawableTop:
                    drawableTop = a.getDrawable(attr);
                    break;
                case R.styleable.ImageRadioButton_drawableBottom:
                    drawableRight = a.getDrawable(attr);
                    break;
                case R.styleable.ImageRadioButton_drawableRight:
                    drawableBottom = a.getDrawable(attr);
                    break;
                case R.styleable.ImageRadioButton_drawableLeft:
                    drawableLeft = a.getDrawable(attr);
                    break;
                default :
                    break;
            }
        }
        a.recycle();
        setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, drawableRight, drawableBottom);
    }

    public void setCompoundDrawablesWithIntrinsicBounds(Drawable left,
                                                        Drawable top, Drawable right, Drawable bottom) {
        if (left != null) {
            left.setBounds(0, 0, mDrawableSize, mDrawableSize);
        }
        if (right != null) {
            right.setBounds(0, 0, mDrawableSize, mDrawableSize);
        }
        if (top != null) {
            top.setBounds(0, 0, mDrawableSize, mDrawableSize);
        }
        if (bottom != null) {
            bottom.setBounds(0, 0, mDrawableSize, mDrawableSize);
        }
        setCompoundDrawables(left, top, right, bottom);
    }
}

© 著作权归作者所有

粉丝 15
博文 29
码字总数 17864
作品 0
福州
程序员
私信 提问
多排radiobutton单选

3排radiobutton分别用3个radiogroup包含: 布局如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layoutwidth="matchparent" android:layouthei......

STaR_枫
2013/12/09
0
0
Android 第十课——UI RadioButton

常用基础空组件 5 RadioGroup RadioButton 单选按钮时常用组件之一,但是开发过程中虽然很多地方会用到单选按钮,但是却不会用Android系统提供的原始样式,类似我们在写html时,不同的浏览器...

learn_more
2015/01/06
0
0
Android 自定义RadioButton的样式

我们知道Android控件里的button,listview可以用xml的样式自定义成自己希望的漂亮样式。 最近用到 RadioButton,利用xml修改android:background="@drawable/button_drawable",其中 button_d...

鉴客
2011/12/14
3.4K
0
Android基础教程(七)之----单选项框RadioGroup的综合应用

大家好,我们今天这一节要介绍的是RadioGroup 的组事件.RadioGroup 可将各自不同的RadioButton ,设限于同一个Radio 按钮组,同一个RadioGroup 组里的按钮,只能做出单一选择(单选题). 首先,我们...

神勇小白鼠
2011/01/06
0
0
Android开发之道(5)Widget、Activity与Intent

转载请注明来自“柳大的CSDN博客”:http://blog.csdn.net/poechant 一、Widget 1、TextView 每个 Widget 都有很多属性,有一些属性是几乎每个 Widget 都有的,比如“id”、“layout_width”...

晨曦之光
2012/04/24
70
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
25分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部