我只是想知道是否有办法改变View
(即。TextView
等)的背景图像的不透明度。
我知道我可以像这样设置背景图片:
android:background="@drawable/my_drawable_image"
或者我可以使用如下的alpha设置设置特定的背景颜色:
android:background="#10f7f7f7"
如果我将背景设置为可绘制图像,是否可以控制不透明度(设置alpha)?我想在XML Layout中执行此操作。我已经知道我可以抓取Drawable对象并以编程方式设置alpha,但我想看看我是否可以在布局中进行。
答案 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);