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

Emk*_*key 124 layout android 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>
Run Code Online (Sandbox Code Playgroud)

Mar*_*ues 293

试试这个

RelativeLayout relative = (RelativeLayout) findViewById(R.id.widget29);
relative.setBackgroundResource(0);
Run Code Online (Sandbox Code Playgroud)

检查RelativeLayout文档中的setBackground函数

  • api 16?api 8有什么用的吗? (6认同)
  • 我收到此错误:类型View中的方法setBackgroundResource(int)不适用于参数(null) (4认同)
  • 现在不推荐使用setBackgroundDrawable.@ Suraj的答案现在更好了. (3认同)
  • 如果不起作用:检查你是否使用了背景属性而不是android:src! (2认同)

Ada*_*zyk 67

setBackgroundResource(0)是最好的选择.从文档:

将背景设置为给定资源.资源应引用Drawable对象或0以删除背景.

它适用于所有地方,因为它是自API 1以来.

setBackground很久以后,在API 16中添加,所以如果你minSdkVersion的价格低于16,它将无法运作.

  • 谢谢你,经过4个小时的打击,我完全救了我.这在你在onClick事件中动态创建一个切换按钮(选择2个drawable)时非常有用,但是在你的切换事件接管之前需要一个可见的按钮显示(因为在click事件发生之前什么都不会显示,所以当它你可以使用`setBackgroundResource(0)`删除你之前的"set"按钮drawable). (2认同)
  • 这应该是选择的答案,因为它在内存管理和api级别支持方面都是最佳解决方案. (2认同)

Sur*_*jaj 47

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

  • Drawables可以有填充,所以如果你删除背景,你也需要删除填充. (3认同)

Adn*_*aki 5

试试这个代码:

imgView.setImageResource(android.R.color.transparent); 
Run Code Online (Sandbox Code Playgroud)

这也有效:

imgView.setImageResource(0); 
Run Code Online (Sandbox Code Playgroud)

但要小心这个不起作用:

imgView.setImageResource(null); 
Run Code Online (Sandbox Code Playgroud)