Непрозрачность фона Рисуемое изображение в представлении (с использованием XML-макета)

Мне просто интересно, есть ли способ изменить непрозрачность фонового изображения для View (т.е. TextView и т. д.).

Я знаю, что могу установить фоновое изображение следующим образом:

android:background="@drawable/my_drawable_image"

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

android:background="#10f7f7f7"

Есть ли способ контролировать непрозрачность (установить альфу), если я устанавливаю фон как рисуемое изображение? И я хочу сделать это в макете XML. Я уже знаю, что могу захватить объект Drawable и программно установить альфу, но я хочу посмотреть, смогу ли я сделать это в макете.


person xil3    schedule 11.02.2011    source источник
comment
Это можно сделать с помощью ресурса drawable xml. Посмотрите мой ответ stackoverflow.com/a/36467846/5460053   -  person Monish Kamble    schedule 07.04.2016


Ответы (5)


В итоге я остановился на программном решении, так как не похоже, что это можно сделать с помощью макетов XML.

Drawable rightArrow = getResources().getDrawable(R.drawable.green_arrow_right_small);

// setting the opacity (alpha)
rightArrow.setAlpha(10);

// setting the images on the ImageViews
rightImage.setImageDrawable(rightArrow);
person xil3    schedule 14.02.2011
comment
@mohammadsadeghsaati #setAlpha(int) доступен с уровня API 1 на Drawable. - person Aleks N.; 08.05.2015

Это может сделать вашу работу проще

View backgroundimage = findViewById(R.id.background);
Drawable background = backgroundimage.getBackground();
background.setAlpha(80);

Значения альфа-канала 0-255, 0 означает полностью прозрачный, а 255 означает полностью непрозрачный.

из: Этот ответ

person Mani    schedule 16.11.2012

Вы также можете использовать XML для изменения прозрачности:

android:alpha = "0.7"

Значение альфа варьируется от 0 до 1

person Alireza    schedule 20.09.2015
comment
это применяет альфу к виду, а не к фону - person andrei; 06.06.2017

Вы можете встроить изображение в xml, чтобы вы могли видеть его в графическом макете.

<LinearLayout
        style="@style/LoginFormContainer"
        android:id="@+id/login_layout"
        android:orientation="vertical" 
        android:background="@drawable/signuphead">

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

Drawable loginActivityBackground = findViewById(R.id.login_layout).getBackground();
loginActivityBackground.setAlpha(127);
person Shlomi Hasin    schedule 01.04.2014

Ответ, который вы дали, не совсем соответствовал заданному вами вопросу. Вот что я сделал.

    Drawable login_activity_top_background = getResources().getDrawable(R.drawable.login_activity_top_background);
    login_activity_top_background.setAlpha(127);
    LinearLayout login_activity_top = (LinearLayout) findViewById(R.id.login_activity_top);
    login_activity_top.setBackgroundDrawable(login_activity_top_background);
person JohnnyLambada    schedule 13.03.2012
comment
Что ж, мой вопрос заключался в том, можно ли его установить в макете XML, а не программно. - person xil3; 13.03.2012