Непрозрачность фона. Рисуемое изображение в представлении (с использованием XML-макета). - PullRequest
23 голосов
/ 11 февраля 2011

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

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

android:background="@drawable/my_drawable_image"

Или я могу установить определенный цвет фона с настройкой альфа, как это:

android:background="#10f7f7f7"

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

Ответы [ 5 ]

33 голосов
/ 14 февраля 2011

Я закончил тем, что просто выбрал программное решение, так как не похоже, что это можно сделать с помощью макетов 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);
13 голосов
/ 16 ноября 2012

Это может упростить вашу работу

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

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

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

8 голосов
/ 20 сентября 2015

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

android:alpha = "0.7"

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

6 голосов
/ 02 апреля 2014

Вы можете встроить изображение в 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);
2 голосов
/ 13 марта 2012

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

    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);
...