我是android新手并尝试创建一个简单的颜色选择器。
这个想法是让一些实心圆圈显示颜色,所选择的圆圈应该有一个圆圈。
这听起来不太难。我用<shape>
绘制圆圈,创建两个资源,一个只有一个实心圆圈,一个带有实心圆圈,另一个带有实心笔迹。然后我创建了<selector>
并将其设置为<RadioButton>
的背景。
这适用于一种颜色,但是现在我希望使用相同的样式,但每种<RadioButton>
使用不同的颜色。
我能想到的唯一解决方法是为每种颜色创建这个三联xml文件。这肯定会起作用,但它让我觉得非常不优雅。
我试图访问按钮的背景,但似乎我只能访问<selector>
,而不是它的孩子。
我还尝试创建一个FrameLayout
来RadioButton
和ImageView
,这样RadioButton
只需要显示边框。这并没有完全奏效。我可以选择一个RadioButton,但是在选择另一个时不会取消选择。
我想最好的解决方案是让背景可以根据按钮的状态自行改变,就像<selector>
一样,但是用更全面的方式来确定要使用哪个可绘制的,至少与访问tag
- RadioButton
的属性,但我看不到如何执行此操作。
答案 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)")