BackgroundTint在Android中产生奇怪的颜色

时间:2016-02-02 10:40:39

标签: android

好的......之前我曾尝试过这个问题,但我不认为我解释得很好......

我在Android中有一个按钮。按钮的默认颜色是#999999(Holo Light),它的不透明度(我认为它的40%),在我的背景颜色上,它最终计算到#575757。背景为#303030

我想将BackgroundTint应用于此按钮。我作为色调应用的颜色是#F68800。但是,当我应用此色调时,按钮的颜色不会显示为#F68800,而是计算为#7c501a。我认为这与Holo Light按钮略微透明有关......

如何让按钮的最终颜色显示为#F68800

我尝试过使用android:backgroundTintMode="src_over",但最终会忽略按钮的样式和9补丁。

1 个答案:

答案 0 :(得分:1)

正如您所怀疑的那样,原始的alpha就是您的问题。你需要忽略它才能让你的'清楚'"色彩。但是,忽略原始alpha也意味着你失去了按钮从9补丁中获得的形状/样式(正如你已经注意到的那样)。

当然,这会造成一种不可能的情况 - 你不能同时忽略和使用原始的alpha。

如果这非常重要,我认为您最好的选择就是将the original 9-patch复制到您的项目中(不要忘记所有dpi变体和各种状态),使主按钮区域变得不透明白色,并使你的有色按钮改为使用该背景。

更容易的替代方法是切换到Material主题(可能是支持库版本以便向后兼容)。支持库也enables backgroundTint on older Android versions