Установить прозрачный фон imageview на Android


334

Я использую веб-вид, в который я добавляю вид изображения. Как я могу установить фон этого изображения прозрачным?

Я пробовал это:

mImageview.setBackgroundResource(R.color.trans);

Где trans<color name="trans">#00000000 </color>.


Ответы:


571

В вашем XML установите Backgroundатрибут любого цвета, White(#FFFFFF)оттенка или Black(#000000)оттенка. Если вы хотите прозрачности, просто поставьте 80 перед фактическим хеш-кодом:

#80000000

Это изменит любой цвет на прозрачный .. :)


3
@ Харшад: Можно ли установить, скажем, 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

3
@ Харшад: Извините, я не понял вашего ответа. У меня нет никакого значения RGB, но есть TextView с фоновым изображением, которое я хочу, скажем, на 50% прозрачным. Но, во всяком случае, я нашел ответ здесь в StackOverflow: View.getBackground().setAlpha(50). Не может быть проще, верно? : о) В любом случае, спасибо за вашу помощь !!
Луис А. Флорит

21
Если вы добавите любое число от 01 до 99 перед фактическим хеш-кодом, это даст вам прозрачность. Например: черный с большей прозрачностью - #10000000 черный с меньшей прозрачностью - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Не только от 01 до 99, как и остальные числа, они также являются шестнадцатеричными, поэтому вы можете поместить все от 00 до ff. Для прозрачности на пятьдесят процентов вы должны поставить 80 вместо 50, а для остальных у вас есть некоторые базовые вычисления, которые нужно сделать ...
Неманья Ковачевич

571

Вы можете установить прозрачный фон любого макета, любого представления или любого компонента, добавив этот код в XML:

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

4
У меня была проблема со старыми версиями Android, которые не обрабатывали # ff000000 как прозрачный. Используя это исправлено.
loeschg

11
Вероятно, потому что #FF 00 00 00 = 100% черный.
Derk-Jan

3
@Ioeschg Первые 2 буквы для альфа-канала. # 00xxxxxx будет прозрачным, тогда как x - любое желаемое шестнадцатеричное значение.
user1032613

10
И эквивалентным программно, если кому-то интересно, является Android.Resource.Color.Transparent :)
leoneboaventura

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

179

В дополнение к тому, что упомянул Харшад:

Два шестнадцатеричных символа могут быть добавлены к любому шестнадцатеричному цветному коду. Первые два символа в 8-значном шестнадцатеричном цветовом коде представляют его непрозрачность в Android.

Два шестнадцатеричных символа могут варьироваться от 00 до FF. Например,

  • Нормальный непрозрачный черный гекс- "# 000000"
  • Полностью прозрачный - "# 00000000"
  • Полностью непрозрачный - "# FF000000"
  • 50% прозрачность - "# 7F000000"

Таким образом, вы можете изменить любой цвет на любой уровень прозрачности.

Чтобы найти шестнадцатеричный префикс в процентах:

Разделите число в процентах на 100 и умножьте на 255, чтобы получить десятичное значение. Преобразуйте десятичное число в шестнадцатеричное здесь .

Например, для 50%, 50/100 * 255 = 127. Используя ссылку, мы получаем шестнадцатеричное значение 7F.

Источник: Android: как создать прозрачный или непрозрачный фон


3
на самом деле, совершенная прозрачность 50% является 7F , а не 80;)
shinyuX

147

Если вы хотите добавить прозрачность 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

Вы также можете установить непрозрачность программно, например:

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% - СС

75% - BF

70% - B3

65% - А6

60% - 99

55% - 8C

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4D

25% - 40

20% - 33

15% - 26

10% - 1А

5% - 0D

0% - 00


27

Уже есть предопределенная константа. Использование Color.TRANSPARENT.


1
Использование константы должно быть лучшим / самым чистым способом сделать это! Но в этом случае значение Color.TRANSPARENTустановлено на 0x00000000(а не на ожидаемую непрозрачность 0xFF000000), поэтому в зависимости от того, как вы это сделаете, эта константа может не помочь в достижении прозрачности! Еще +1 за рекомендацию константы!
Левит

24

В Android уже встроен прозрачный: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Но я думаю, что вы можете сделать фон изображения, который вы помещаете в WebView, прозрачным, например, с прозрачным PNG, а не фоном ImageView. Если фактическое изображение не совсем прозрачное, то фон ImageView не может быть виден через него.


изображение прозрачное .. у него не было никакого фона .. я также попытался установить фоновое изображение, как вы сказали ... но это не сработало ...
пожалуйста,

Можете ли вы опубликовать более подробную информацию, такую ​​как ссылка на изображение, которое вы используете, а также код и макет, который вы используете?
Интриги


13

Попробуйте этот код :)

Это полностью прозрачный гекса код - "# 00000000"


10

Или, в качестве альтернативы, проанализируйте идентификатор ресурса с помощью следующего кода:

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

10

В вашем XML-файле установите атрибут «Альфа»

Такие как

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
Игорь Ганапольский

1
@IgorGanapolsky: попробуйте посмотреть, elementесли это нулевой объект
SuicideSheep

5

Для полной прозрачности используйте следующее:

#00000000

Когда я попробовал с # 80000000, у меня появилось черное прозрачное наложение, которое я не хочу. Попробуйте изменить первые две цифры; он контролирует уровень прозрачности, как

#00000000
#10000000
#20000000
#30000000

идеальный цвет на прозрачной темноте
Наджиб Ахмед Путавала



4

Другой рабочий вариант, с которым я столкнулся, - это установить android:background="@null"


2

Вы также можете использовать View.setAlpha(float)для точного изменения видимости.

0 будет прозрачным, 1 полностью видимым. ;)


1
Это меняет альфу View, а не его фон!
Игорь Ганапольский,

В этом случае весь вид будет прозрачным, включая содержимое / изображение в нем, а также настройку альфа-канала, что в данном случае неверно. Пользователь хочет сохранить прозрачность изображения, а не изменить его на прозрачность.
Гарун Хаджем

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
Хотя этот код может помочь решить проблему, он не объясняет, почему и / или как он отвечает на вопрос. Предоставление этого дополнительного контекста значительно улучшило бы его долгосрочную ценность. Пожалуйста, измените свой ответ, чтобы добавить объяснение, в том числе какие ограничения и предположения применяются.
Тоби Спейт

0

Попробуй это:

#aa000000

Для прозрачности 000000 = черный, вы можете изменить эти шесть чисел на нужный вам цвет.


какой ресурс вы можете использовать до цветного гекса
Mina Fawzy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.