【问题标题】:Android widget with transparent background: added image should not be transparent具有透明背景的 Android 小部件:添加的图像不应该是透明的
【发布时间】:2025-11-29 22:15:01
【问题描述】:

我为 Android 4.0 开发了一个原生小部件。

Tha 布局是这样的:

Framelayout <- alpha 0.7
  LinearLayout
    TextView
    ImageView <- alpha 1.0
    TextView

主要元素是图像。我喜欢让小部件的背景透明,而不是图像。所以我在 xml 文件中将FrameLayout 的 alpha 设置为 0.7,将ImageView 的 alpha 设置为 1.0。在代码中,我使用setImageViewBitmap 设置图像。

现在小部件具有我想要的一些透明度。 但是图像也有一些透明度。但我应该是不透明的。我该如何设置解决这个问题?

【问题讨论】:

  • Alpha 由后代继承。您可能想要设置 android:background 属性,而不是。

标签: android widget transparency alpha


【解决方案1】:

您可以使用具有透明度的背景颜色,而不是使用 alpha(因为它会淡化父项内部的所有内容)。

对于 0.7 alpha,这意味着您可以使用 70% 的白色(B3 是 70% 的值):

android:background="#B3FFFFFF"

因此,您将拥有 30% 的透明背景,并且您的 ImageView 将正常可见。

如果你坚持通过 alpha 来做,你必须将你的 ImageView 从你设置的 alpha 值的View 中排除。

【讨论】: