【发布时间】:2015-07-22 07:52:36
【问题描述】:
我想知道这是否可能,但希望有人能够确认。
我在 XML 中创建了一个简单的自定义按钮布局来处理聚焦/按下和休眠状态。请参阅底部的代码。当我用它来创建一个新按钮时,这很好用。但是,如果用户不喜欢默认设置,我希望用户能够通过颜色选择器更改按钮颜色。但是,我知道以编程方式更改按钮背景颜色的唯一方法是使用
mybutton.setBackgroundColor(someothercolor);
但如果我这样做,它会覆盖所有 XML 布局代码,并且在按下按钮时我会丢失颜色变化。我想这是设计使然,因为我实际上是在覆盖整个背景样式,但我真正想做的是允许用户在未按下自定义按钮时更改按钮颜色,但保留其他状态的样式和布局按钮可能在(即按下时会发生什么)。
有什么想法吗?
提前谢谢你。
纳特
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@color/originalbuttoncolor" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@color/someotherbuttoncolor" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@color/someotherbuttoncolor" />
<item android:drawable="@color/originalbuttoncolor" />
</selector>
【问题讨论】:
-
我看到的解决方案是将颜色六进制保存到数据库中,然后每次设置按钮时,它都会使用保存的颜色
-
感谢所有 cmets。听起来没有简单的方法可以做到这一点,并且创建一个数据库只是为了允许按钮颜色更改似乎有点矫枉过正。如果人们真的想改变按钮颜色,也许我最好只创建几个主题或者干脆失去按下状态的颜色。如果有人有任何更简单的解决方案,那么我会全力以赴,再次感谢大家的关注。
标签: java android android-studio