2011-02-08 4 views

ответ

95

Нет, нет, см. Раздел «Связанные XML-атрибуты»: отсутствует в документации ImageView.setAlpha(int). Альтернативой является использование View.setAlpha(float), XML counterpart - android:alpha. Он принимает диапазон от 0.0 до 1.0 вместо 0 до 255. Используйте его, например. как

<ImageView android:alpha="0.4"> 

Однако последний в наличии только с уровня API 11.

+2

Да, это можно сделать в xml. проверьте jfcogato ответ ниже. – AndroidDev

+6

Даже если я просто повторяюсь здесь: 'ImageView.setAlpha (int)' принимает 'int', а' android: alpha' принимает float, так что, строго говоря, последнее не является точным XML-аналог первого, но он является экземпляром 'View.setAlpha (float)'. И, как уже упоминалось несколько раз здесь, 'android: alpha' /' View.setAlpha (float) 'доступны только с уровня API 11 . – sschuberth

+0

разница в том, что допустимый диапазон равен 0-1 для float one и 0-255 для int one. – ataulm

38

Я не уверен в XML, но вы можете сделать это с помощью кода следующим образом.

ImageView myImageView = new ImageView(this); 
myImageView.setAlpha(xxx); 

В пре-API 11:

  • диапазон составляет от 0 до 255 (включительно), 0 является прозрачным и 255 является непрозрачным.

В API 11+:

  • диапазон составляет от 0f до 1f (включительно), 0f быть прозрачным и 1f быть непрозрачным.
+2

Да, я знаю. (Я надеялся, что это было скрыто в вопросе.) Одна точка XML - это лишить некоторых из этого кода. Для меня не имеет смысла, почему «alpha» не имеет аналога XML-атрибута, когда разные размеры, позиции. – SK9

+0

Интересно, почему это устарело? это потому, что теперь у них есть параметр float? –

+0

Да, вы можете использовать imageView.setAlpha (1.0f), но требуется уровень API 11. –

0

Альфу можно установить вместе с цветом, используя следующий шестнадцатеричный формат #ARGB или #AARRGGBB. См http://developer.android.com/guide/topics/resources/color-list-resource.html

+0

Я хочу установить альфа изображения с помощью атрибута XML. Помогает ли это? – SK9

+0

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

+0

Что значит «в самом изображении»? В XML? Надзор может быть, но атрибут альфа-XML отсутствует. – SK9

12

Может быть полезной альтернатива для фона гладкокрашеной:

Помещенного LinearLayout над ImageView и использовать LinearLayout как непрозрачность фильтр. В следующем небольшом примере с черным фоном:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#FF000000" > 

<RelativeLayout 
    android:id="@+id/relativeLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/icon_stop_big" /> 

    <LinearLayout 
     android:id="@+id/opacityFilter" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#CC000000" 
     android:orientation="vertical" > 
    </LinearLayout> 
</RelativeLayout> 

варьирования Android: фон атрибут LinearLayout между # 00000000 (полностью прозрачный) и # FF000000 (полностью непрозрачный).

+1

) Не совсем так, чтобы решить эту проблему, особенно на телефонном устройстве. –

+0

не лучший ... но все же законный ответ. – ByteMe

+0

Это отлично работает, когда вы просто хотите сделать фон прозрачным, но НЕ его дочерними элементами. Использование альфа в родительском контейнере делает все его дочерние элементы слишком прозрачными – noni

199

Это проще, чем другой ответ. Существует значение xml alpha, которое принимает двойные значения.

android:alpha="0.0" Thats невидимого

android:alpha="0.5" сквозного

android:alpha="1.0" видим полностью

Вот как это работает.

+14

Существует 'setAlpha (float)' и 'android: alpha' только с API 11 (Android 3.0). Для предшествующего API 11 необходимо использовать код для установки альфы для изображения. Как уже говорилось в sschuberth в anser выше. – Salw

+3

Это должен быть правильный ответ! – Antonio

+0

@ Антонио Почему? Этот ответ не добавляет никакой информации поверх моей, а наоборот, менее полной. – sschuberth

3

Используйте эту форму для древней версии Android.

ImageView myImageView; 
myImageView = (ImageView) findViewById(R.id.img); 

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F); 
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha); 
7

Существует в настоящее время XML-альтернатива:

 <ImageView 
     android:id="@+id/example" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/example" 
     android:alpha="0.7" /> 

Это: андроид: альфа = "0.7"

При значении от 0 (прозрачный) до 1 (непрозрачный) ,

4

использовать андроид: alpha = 0.5 для достижения непрозрачности 50% и превратить иконки Android Material из черного в серый.

Смежные вопросы