安卓卡片式、数量可变自定义RadioButton

安卓卡片式、数量可变RadioButton

目标:

我们的效果图如下:

安卓卡片式、数量可变自定义RadioButton

左边红框是我们的目标。我们需要实现:

1、      卡片数量是动态变化的

2、      可滑动

3、      支持卡片颜色和图片的变化

 

实现思路:

实现的思路比较简单,就是外层是一个scrollView,里面的基布局是一个RadioGroup。我们在activity里面动态地添加radioButton就好了。思路比较简单。但是实现起来却有很多需要注意的知识点。

 

功能实现:

布局

安卓卡片式、数量可变自定义RadioButton

 

布局就是很简单的。加了scrollView从而实现了滑动功能。基布局RadioGroup实现RadioButton的单个被点击的效果。

Activity中添加RadioButton:

布局很简单,但是添加RadioButton比较麻烦。

安卓卡片式、数量可变自定义RadioButton

资源文件名:

安卓卡片式、数量可变自定义RadioButton

以上就是全部的代码。

这里用到的知识点是:

1、      自定义DrawableSelector和ColorSelector。

DrawableSelector:

安卓卡片式、数量可变自定义RadioButton

ColorSelector:

ColorSelector也是一样!只不过这里我们定义好了selector在xml中

也就不必麻烦了(自定义DrawableSelector是因为radiobutton是动态的,图片我都不知道是什么),这里的文字的变化比较单一,就定义在了xml中。

安卓卡片式、数量可变自定义RadioButton

安卓卡片式、数量可变自定义RadioButton

安卓卡片式、数量可变自定义RadioButton

2、      RadioButton在手动添加的时候需要给第一个设置一个id,因为这里RadioGroup在添加RadioButton第一个的时候没有赋予ID值(默认为0)。这就尴尬了,因为RadioGroup里面是通过ID来确定唯一被checked的button。不加的效果如下:

安卓卡片式、数量可变自定义RadioButton

到这里,基本的东西就没有了。至于RadioButton的背景设置一个透明,一个灰色背景,黑色边框就好了。