在Android中以编程方式删除背景可绘制

时间:2011-07-26 07:18:16

标签: android layout background

我想以编程方式删除背景drawable(@ drawable / bg)。有没有办法做到这一点?

目前,我的布局中有以下XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/widget29"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/bg">

</RelativeLayout>

11 个答案:

答案 0 :(得分:278)

试试这个

RelativeLayout relative = (RelativeLayout) findViewById(R.id.widget29);
relative.setBackgroundResource(0);

检查RelativeLayout documentation

中的setBackground函数

答案 1 :(得分:64)

setBackgroundResource(0)是最佳选择。来自documentation

  

将背景设置为给定资源。资源应该引用a   可绘制对象或 0以删除背景

它可以在任何地方使用,因为它是自API 1以来的。

很久以后,在API 16中添加了

setBackground,因此如果minSdkVersion低于16,则无效。

答案 2 :(得分:47)

这有助于我删除背景颜色,希望它可以帮助某人。 setBackgroundColor(Color.TRANSPARENT)

答案 3 :(得分:4)

试用此代码:

 

这个也有效:

imgView.setImageResource(android.R.color.transparent); 

但要小心这个不起作用:

imgView.setImageResource(0); 

答案 4 :(得分:3)

我在android 4 +中试试这个:

 view.setBackgroundDrawable(0);

答案 5 :(得分:1)

首先,你必须写

 android:visibility="invisible" <!--or set VISIBLE-->

然后使用它来显示它

 myimage.setVisibility(SHOW);//HIDE                                       

答案 6 :(得分:0)

此方法的最佳表现:

imageview.setBackgroundResource(R.drawable.location_light_green);

使用此功能。

答案 7 :(得分:0)

使用setBackgroundColor(Color.TRANSPARENT)将背景设置为透明,或使用setBackgroundColor(0)。这里Color.TRANSPARENT是颜色类的默认属性。它会正常工作。

答案 8 :(得分:0)

我有一个案例场景,我尝试了上面的所有答案,但总是在旧图像之上创建新图像。对我有用的解决方案是:

imageView.setImageResource(R.drawable.image);

答案 9 :(得分:0)

除了优秀的答案之外,如果你想通过xml实现这个目的,那么你可以添加:

android:background="@android:color/transparent

到你的观点。

答案 10 :(得分:0)

这项工作对我来说:

yourview.setBackground(null);