自定义单选按钮具有不同的颜色

时间:2014-02-13 00:04:01

标签: android

我是android新手并尝试创建一个简单的颜色选择器。

这个想法是让一些实心圆圈显示颜色,所选择的圆圈应该有一个圆圈。

这听起来不太难。我用<shape>绘制圆圈,创建两个资源,一个只有一个实心圆圈,一个带有实心圆圈,另一个带有实心笔迹。然后我创建了<selector>并将其设置为<RadioButton>的背景。

这适用于一种颜色,但是现在我希望使用相同的样式,但每种<RadioButton>使用不同的颜色。

我能想到的唯一解决方法是为每种颜色创建这个三联xml文件。这肯定会起作用,但它让我觉得非常不优雅。

我试图访问按钮的背景,但似乎我只能访问<selector>,而不是它的孩子。

我还尝试创建一个FrameLayoutRadioButtonImageView,这样RadioButton只需要显示边框。这并没有完全奏效。我可以选择一个RadioButton,但是在选择另一个时不会取消选择。

我想最好的解决方案是让背景可以根据按钮的状态自行改变,就像<selector>一样,但是用更全面的方式来确定要使用哪个可绘制的,至少与访问tag - RadioButton的属性,但我看不到如何执行此操作。

1 个答案:

答案 0 :(得分:2)

检查这个github repo

https://github.com/VishalJogiya/CustomRadioAndShapes xml布局代码

let attribString = AZTextFrameAttributes(attributedString: lbl.attributedText!)
let width : CGFloat = attribString.calculatedTextWidth()
print("width is :: >> \(width)")