背景上的不透明度视图中的可绘制图像(使用XML布局)

时间:2011-02-11 12:18:15

标签: android layout view opacity drawable

我只是想知道是否有办法改变View(即。TextView等)的背景图像的不透明度。

我知道我可以像这样设置背景图片:

android:background="@drawable/my_drawable_image"

或者我可以使用如下的alpha设置设置特定的背景颜色:

android:background="#10f7f7f7"

如果我将背景设置为可绘制图像,是否可以控制不透明度(设置alpha)?我想在XML Layout中执行此操作。我已经知道我可以抓取Drawable对象并以编程方式设置alpha,但我想看看我是否可以在布局中进行。

4 个答案:

答案 0 :(得分:33)

我最终选择了程序化解决方案,因为它看起来不像是可以通过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);

答案 1 :(得分:13)

这可能会使您的工作更简单

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

Alpha值0-255,0表示完全透明,255表示完全不透明

来自:This Answer

答案 2 :(得分:6)

您可以将图像嵌入到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);

答案 3 :(得分:2)

您给出的答案并未完全回答您提出的问题。这就是我所做的。

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