【发布时间】:2018-05-25 18:49:05
【问题描述】:
我是 android 新手,尝试创建一个简单的颜色选择器。
这个想法是让几个实心圆圈显示一种颜色,并且选定的圆圈周围应该有一个圆圈。
这听起来并不难。我用<shape>画圆,创建两个资源,一个只有实心圆,一个是实心圆,一个是实线透明圆。然后我创建了一个<selector> 并将其设置为我的<RadioButton> 的背景。
这适用于一种颜色,但现在我想拥有相同的样式,但每个 <RadioButton> 使用不同的颜色。
我能想出的唯一解决办法是为每种颜色创建三组 xml 文件。这肯定行得通,但我觉得它非常不雅。
我尝试访问按钮的背景,但似乎我只能访问<selector>,而不是子项。
我还尝试创建一个 FrameLayout 来作为 RadioButton 和 ImageView 的父级,因此 RadioButton 只需要显示边框。这并没有完全奏效。我可以选择一个 RadioButton,但在选择另一个 RadioButton 时它不会被取消选择。
我想最好的解决方案是拥有一个可以根据按钮状态自行改变的背景,就像<selector> 所做的那样,但使用更全面的方式来确定使用哪个可绘制对象,至少可以访问tag-RadioButton 的属性,但我看不到如何执行此操作。
【问题讨论】:
-
标题是 CheckBoxes,而在正文中您谈论的是 RadioButtons.. 哪个是错字?
-
RadioButtons 它是,对不起,我猜我的大脑有点融化了 :(
-
好吧,我使用所说的“xml 文件三元组”实现了类似的东西,在我看来,它比在代码中设置资源更干净。虽然现在想起来,但更好的解决方案可能是创建一个可以具有颜色属性的自定义 RadioButton。
-
我的想法完全一样,但我只需要 8 种颜色,所以我选择了这个不太好的但快速的解决方案。
-
但是认真地尝试做一个自定义 RadioButton 扩展 RadioButton 类。有 2 个形状(已选择、未选择)并在您的自定义类中将背景设置为未选择的形状并根据您的类中添加的颜色属性动态编辑形状颜色,如下所述:stackoverflow.com/questions/7164630/…。另请注意,您必须根据选中-未选中状态更改背景。
标签: android