在Android上设置ImageView的透明背景

392
我正在使用一个 WebView,在其中添加一个 ImageView。如何将这个 ImageView 的背景设置为透明?
我尝试过以下代码:
```java imageView.setBackgroundColor(0x00000000); ```
但是它没有起作用。
mImageview.setBackgroundResource(R.color.trans);

其中 trans<color name="trans">#00000000 </color>


这可以帮助您:https://dev59.com/32035IYBdhLWcg3wZvFg#11019879 - Martin Stanimirov
我设置了#00000000,它完全透明。也许你的代码中还有其他错误? - sucicf1
25个回答

673

您可以通过在XML中添加以下代码,将任何布局、视图或组件的背景设置为透明:

android:background="@android:color/transparent" 

5
我在旧版本的安卓系统上遇到了问题,无法将#ff000000作为完全透明处理。使用此方法解决了该问题。 - loeschg
11
可能是因为 #FF 00 00 00 = 100% 黑色。 - Derk-Jan
3
@Ioeschg的意思是前两个字母是用于控制透明度的。以#00xxxxxx开头的代码代表完全透明,而x可以是任何你想要的十六进制值。请注意,此处只涉及翻译,不包括任何解释或其他额外内容。 - WSBT
11
如果有人感兴趣,相应的编程程序是 Android.Resource.Color.Transparent :) - leoneboaventura
6
尝试使用android:background="#00ffffff"。这将设置背景为透明。 - ban-geoengineering
显示剩余3条评论

620
在您的 XML 中,将 Background 属性设置为任何颜色,白色(#FFFFFF)或黑色(#000000)阴影。如果您想要透明度,只需在实际的哈希代码前加上 80 即可:
#80000000

这将把你想要的任何颜色变为透明的.. :)


3
能否在使用View.setBackgroundResource(R.drawable.something)设置背景图时,将其透明度设为40%呢? - Luis A. Florit
3
@Harshad: 抱歉,我不理解你的回答。我没有任何RGB值,但是有一个带有背景图片的TextView,我想让它半透明,比如说50%。但是,无论如何,我在stackoverflow上找到了答案:View.getBackground().setAlpha(50)。这不能再简单了,对吧? :o) 无论如何,感谢您的帮助!! - Luis A. Florit
24
如果你在实际哈希码前面添加01到99中的任何一个数字,它将使你获得透明度。例如:更透明的黑色 - #10000000 较不透明的黑色 - #99000000 - AnhSirk Dasarp
65
不仅限于01至99,其他数字也是十六进制的,因此可以输入00到ff之间的任何数字。如果您想要50%透明,应该输入80而不是50,对于其他透明度值,您需要做一些基本计算... - Nemanja Kovacevic
我之前使用的RGB值是#4e4747,可以得到纯棕色。但现在我将其更改为#804e4747,却得到了带有一点透明度的黑色。为什么? - Md. Arafat Al Mahmud
显示剩余6条评论

189

除了Harshad提到的内容:

任何十六进制颜色代码都可以附加两个十六进制字符。在Android中,8位十六进制颜色代码的前两个字符表示其不透明度。

两个十六进制字符的取值范围为00至FF。例如,

  • 正常不透明黑色hex-“#000000”
  • 完全透明-“#00000000”
  • 完全不透明-“#FF000000”
  • 50%透明-“#7F000000”

这样您就可以将任何颜色更改为任何透明度级别。

要从百分比找到十六进制前缀:

将百分比数字除以100并乘以255以获取十进制值。在此处将十进制转换为十六进制。

例如,对于50%,50/100 * 255 = 127。使用链接,我们得到十六进制值7F。

来源:Android:如何创建透明或不透明的背景


3
实际上,完美的50%透明度是7F而不是80 ;) - shinyuX

185

如果你想要增加20%或30%的透明度,你应该在十六进制代码前面再添加两个字符,比如CC。

注意

android:background="#CCFF0088" 是XML中的代码,在这里,CC表示透明度,FF表示红色因子,00是绿色因子,88是蓝色因子。

一些不透明度代码:

十六进制不透明度值

100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5%  — 0D
0% —  00

您也可以通过编程方式设置不透明度,例如:

You can also set opacity programmatically like:


yourView.getBackground().setAlpha(127);

将不透明度设置在0(完全透明)至255(完全不透明)之间。127.5正好是50%。

你可以使用给定的公式创建任何透明度级别。如果您想要半透明:

 16 |128          Where 128 is the half of 256.
    |8 -0         So it means 80 is half transparent.

而对于25%的透明度:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.

这个答案应该被标记为最佳。谢谢兄弟 <3 - Nghien Nghien

65

使用以下代码来设置黑色:

<color name="black">#000000</color>

现在,如果你想使用不透明度,你可以使用以下代码:

<color name="black">#99000000</color>

以下是透明度代码:

100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00

29

已经有一个预定义的常量了。使用Color.TRANSPARENT


1
使用常量应该是最好/最干净的方法!但在这种情况下,Color.TRANSPARENT 的值设置为 0x00000000(而不是预期的完全不透明的 0xFF000000),因此根据您的处理方式,此常量可能无法真正帮助实现透明度!仍然+1推荐使用常量! - Levite

25

图片是透明的,没有任何背景。我也尝试了设置ImageView背景的方法,但它没有起作用。请帮忙。 - mudit
你能否发布更多细节,例如你正在使用的图片链接、代码和布局? - Intrications

22

试一试这段代码 :)

它是一个完全透明的十六进制代码 - "#00000000"


20

如果您想要代码实现,只需要:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));

15
在您的XML文件中,设置一个名为“Alpha”的属性。
例如:
android:alpha="0.0" // for transparent
android:alpha="1.0" // for opaque

您可以在十进制数0.0到1.0之间给出任何值,以应用所需的透明度。例如,0.5的透明度对于禁用组件是理想的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接