【问题标题】:My colors are getting messed up when I give them an alpha value当我给它们一个 alpha 值时,我的颜色变得混乱了
【发布时间】:2012-07-28 02:21:58
【问题描述】:

我有一个 ListView,我希望这些项目在按下时显示不同于 Holo Blue 的颜色。所以我做了一个可绘制的选择器,效果很好。

我的颜色是FFF100,漂亮的黄色。

但是,我认为它有点太饱和了,所以我想降低 alpha 以使其更像我的标签指示器,这是通过图像文件完成的。它具有相同的颜色,FFF100,但不透明度为 50%。

所以我将颜色更改为 ARGB 值,使用 80 (128/255) 作为 alpha 值。所以我现在的颜色是80FFF100

但现在它看起来像一个奇怪的绿色!

还有我的colors.xml:

<resources>
    <color name="putio_accent">#FFF200</color> **This is the standard yellow color. Using this works fine, but it's too saturated, like I said before.
    <color name="putio_accent_selected">#80FFF100</color> **This should be the same, but with 50% alpha..
</resources>

为什么会这样?!

【问题讨论】:

  • 你能显示你用来设置颜色的代码或 XML 吗?
  • 发现了!添加 alpha 值时,它绘制 Holo Blue,并将其与我的黄色组合。这就是为什么它都是绿色的。蓝色+黄色=绿色,呵呵!那么为什么它显示为蓝色呢?
  • 你是如何添加背景颜色的?它可能仍在使用旧的背景资源+你的......
  • 我将 android:background="@drawable/putio_clickable_bg" 放入我的个人 ListView 项目布局的 XML 中。有错吗?
  • 取决于您的 putio_clickable_bg drawable 是什么。但是...它应该覆盖默认背景...

标签: android colors


【解决方案1】:

不知道为什么它在没有看到代码的情况下这样做,但你总是可以将你的 ARGB 颜色转换为 RGB,使用这个:foreground * alpha + background * (1-alpha)

或拍摄快照并直接拉出颜色(这会将您想要的颜色更改为 f7f077)。当然如果你的背景不纯,那么你就不能这样做了,但是从你的图片看来不是这样的。

【讨论】:

    【解决方案2】:

    修复它。它显示为绿色的原因是由于某种原因,Android 显示了默认的按下颜色(全息蓝色)并将其与我的组合。蓝色 + 黄色 = 绿色!

    我通过在我的行的 XML 中删除这一行来修复它:

    android:background="@drawable/putio_clickable_bg"
    

    并将这一行放入我的 ListView:

    android:listSelector="@drawable/putio_tab_indicator"
    

    我不知道为什么会这样修复它。也许这是 Android 的一个错误?

    【讨论】:

    • 我猜ListView 可能在所选项目的背景后面有它的选择器。因此,您会看到它的背景 + 所选项目的背景。我认为这将是设计使然。很高兴您找到了解决方案!
    • 似乎合乎逻辑。它还解释了为什么当我从行的 XML 中取出 background 行并制作 listSelector = #00000000 时,什么都没有出现。谢谢!
    【解决方案3】:

    我不知道当您在 alpha 列中使用“80”等其他数字时会发生什么。我只使用了“00”,尝试一下,因为它提供了具有大约 50% 不透明度的完美颜色。看来不使用 0 会改变颜色。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2023-04-06
      • 2014-06-04
      • 1970-01-01
      • 2022-10-19
      相关资源
      最近更新 更多