在Android上设置imageview的透明背景


Answers:


571

在XML中,将该Background属性设置为任何颜色,White(#FFFFFF)阴影或Black(#000000)阴影。如果要透明,则在实际的哈希码前加上80:

#80000000

这会将您想要的任何颜色更改为透明颜色.. :)


3
@Harshad:是否可以将背景图片设置为40%的透明度View.setBackgroundResource(R.drawable.something)
路易斯·弗洛里特

@ LuisA.Florit我找到了此链接,您需要在其中乘以0.4(40/100)至RGB值。不知道这是否有帮助,但是您可以尝试一下。forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad 2013年

3
@Harshad:对不起,我不明白你的回答。我没有任何RGB值,但是有一个我想使其具有50%透明性的背景图像的TextView。但是,无论如何,我在stackoverflow中找到了答案:View.getBackground().setAlpha(50)。再简单不过了吧?:o)无论如何,谢谢您的帮助!
路易斯·弗洛里特

21
如果您在实际哈希码之前添加从01到99之间的任何数字,它将为您提供透明度。例如:透明度较高的#10000000 黑色- 透明度 较低的黑色 #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp不仅从01到99,因为其余的数字也都是十六进制的,因此您可以输入从00到ff的任何值。对于百分之五十的透明度,您应该输入80而不是50,对于其他透明度,您需要做一些基本的计算……
Nemanja Kovacevic

571

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

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

4
我在较旧版本的Android上遇到了一个问题,该问题无法将#ff000000视为纯透明。使用此修复它。
loeschg 2013年

11
可能是因为#FF 00 00 00 = 100%黑色。
Derk-Jan 2013年

3
@Ioeschg前2个字母用于alpha通道。#00xxxxxx将是透明的,而x是您想要的任何十六进制值。
user1032613 2013年

10
如果有人感兴趣,则等效的编程方式是Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid tryandroid:background="#00ffffff"
ban-

179

除了Harshad提到的内容:

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

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

  • 正常的不透明黑色十六进制-“#000000”
  • 完全透明-“#00000000”
  • 完全不透明-“#FF000000”
  • 50%透明-“#7F000000”

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

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

将百分比数字除以100,再乘以255,即可得到十进制值。在将十进制转换为十六进制。

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

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


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

147

如果要增加20%或30%的透明度,则应在十六进制代码之前附加两个字符,例如CC。

注意

android:background="#CCFF0088" 在XML中

其中CC是alpha值,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

您还可以通过编程方式设置不透明度:

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.

42

将以下代码用于黑色:

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

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

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

下面是不透明度代码:

100%-FF

95%-F2

90%— E6

85%— D9

80%— CC

75%—高炉

70%— B3

65%— A6

60%— 99

55%— 8摄氏度

50%— 80

45%— 73

40%— 66

35%— 59

30%— 4D

25%— 40

20%— 33

15%— 26

10%— 1A

5%— 0天

0%-00


27

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


1
使用常量应该是最好/最简单的方法!但是在这种情况下,将的值Color.TRANSPARENT设置为0x00000000(而不是预期的完全不透明0xFF000000),因此,根据您的操作方式,此常数可能实际上并不能帮助实现透明度!仍然推荐常数为+1!
莱维特2015年

24

Android中已经内置了一个透明文件:R.color.transparent。http://developer.android.com/reference/android/R.color.html#transparent

但是我认为您可能希望将要放入WebView中的图像的背景变得透明,例如,使用透明的PNG而不是ImageView背景。如果实际图像完全不透明,则无法通过它看到ImageView背景。


图像是transparent..it didnt HAV任何background..i HV也尝试设置ImageView的背景为u HV said..but它没有工作... plz帮助..
mudit

您是否可以发布更多详细信息,例如指向所使用图像的链接以及所使用的代码和布局?
复杂


13

试试这个代码:)

其完全透明的六进制代码- “#00000000”


10

或者,或者,使用以下代码解析资源ID:

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));

10

在您的XML文件中,设置属性“ Alpha”

android:alpha="0.0" // for transparent
android:alpha="1.0" // for opaque

您可以使用介于十进制的0.0到1.0之间的任何值来应用所需的透明度。例如,0.5透明度是禁用组件的理想选择


5

对于仍然面临此问题的人,您可以尝试
element.getBackground().setAlpha(0);


我收到了NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky

1
@IgorGanapolsky:尝试观察element是否为空对象
SuicideSheep




4

我遇到的另一个工作选择是设置 android:background="@null"


2

您还可以使用View.setAlpha(float)来精确地更改可见性。

0是透明的,1是完全可见的。;)


1
这将更改视图的Alpha,而不是其背景!
IgorGanapolsky

这样,整个视图将是透明的,其中包括内容/图片,您设置的Alpha在这种情况下是错误的。用户希望保持图像的透明度,而不是将图像更改为透明。
Haroun Hajem

2

尝试使用以下代码。它将完全或更多地帮助您。

  1. 设计为使用此代码设置背景色的.xml文件:

    android:background="#000000"

    要么

    android:background="#FFFFFF"

    图片在这里

    或者,您也可以通过编程方式进行设置。

  2. 您也可以以编程方式使用此代码:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. 另外,该代码还可以通过编程方式设置背景色:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. 此代码以编程方式相同:

    image.setBackgroundColor(getResources().getColor(Color.WHITE));

颜色取决于您要用于透明的颜色的选择。通常使用白色或#FFFFFF颜色。

关于R.drawable.llabackground:这行代码适用于您的背景样式,例如一些特殊的或与您目的不同的东西。您也可以使用它。


2

如果使用可绘制的XML图像,则可以使其透明,如下图所示,也可以使用颜色代码:

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

在此处输入图片说明


1

具有透明度信息的颜色定义可以采用以下形式

#AARRGGBB 要么 #ARGB

您也可以使用较短的值来实现完全透明: #0000

其他值例如:

white  grey   black
#FFFF  #F888  #F000 - full color
#EFFF  #E888  #E000
#DFFF  #D888  #D000
#CFFF  #C888  #C000
#BFFF  #B888  #B000
#AFFF  #A888  #A000
#9FFF  #9888  #9000
#8FFF  #8888  #8000
#7FFF  #7888  #7000
#6FFF  #6888  #6000
#5FFF  #5888  #5000
#4FFF  #4888  #4000
#3FFF  #3888  #3000
#2FFF  #2888  #2000
#1FFF  #1888  #1000
#0FFF  #0888  #0000 - full transparency

0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency

1
尽管此代码可能有助于解决问题,但并未解释为什么和/或如何回答问题。提供这种额外的环境将大大提高其长期价值。请编辑您的答案以添加解释,包括适用的限制和假设。
Toby Speight

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.