Eliminar fondo dibujable mediante programación en Android

128

Quiero eliminar el fondo dibujable mediante @drawable/bgprogramación. ¿Hay una manera de hacer eso?

Actualmente, tengo el siguiente XML en mi diseño:

<?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>
Emkey
fuente

Respuestas:

316

Prueba esto

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

Verifique las funciones setBackground en la documentación RelativeLayout

Maragues
fuente
44
Me sale este error: el método setBackgroundResource (int) en el tipo Vista no es aplicable para los argumentos (nulo)
UKDataGeek
2
En caso de que no funcione: compruebe si ha utilizado la propiedad de fondo y no android: src!
Chris Conway
3
setBackgroundDrawable ahora está en desuso. La respuesta de @ Suraj a continuación es mejor ahora.
Anand Sainath
66
API 16? ¿Hay algo para la API 8?
user1940676
1
Utilice setBackgroundResource (0). como respondió @AdamStelmaszczyk. ,
Zar E Ahmer
70

setBackgroundResource(0)Es la mejor opción. De la documentación :

Establecer el fondo a un recurso dado. El recurso debe referirse a un objeto Drawable o 0 para eliminar el fondo .

Funciona en todas partes, porque es desde la API 1.

setBackgroundse agregó mucho más tarde, en API 16, por lo que no funcionará si su valor minSdkVersiones inferior a 16.

Adam Stelmaszczyk
fuente
2
Gracias, me salvó totalmente después de 4 horas de golpes en la cabeza. Esto es muy útil en caso de que cree dinámicamente un botón activado (opción de 2 elementos extraíbles) en un evento onClick, pero necesita un botón visible para mostrar antes de que los activados se hagan cargo (porque no se mostrará nada hasta que ocurra el evento clic, por lo tanto, cuando lo hace, puede utilizar setBackgroundResource(0)para eliminar su botón de "configuración" anterior dibujable).
Azurespot
2
Esta debería ser la respuesta elegida porque es la mejor solución tanto en términos de administración de memoria como de soporte de nivel de API.
gregtczap
47

Esto me ayudó a eliminar el color de fondo, espero que ayude a alguien. setBackgroundColor(Color.TRANSPARENT)

Suraj Bajaj
fuente
3
Los elementos dibujables pueden tener relleno, por lo que si elimina el fondo, también debe eliminar el relleno.
Michał Kisiel
1
setBackgroundResource (0) es la mejor opción porque, por lo tanto, elimina el fondo por completo, lo que reduce el sobregiro.
Milán
4

Prueba este código:

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

también este funciona:

imgView.setImageResource(0); 

pero ten cuidado, este no funciona:

imgView.setImageResource(null); 
Adnan Abdollah Zaki
fuente
4

Intento este código en Android 4+ :

view.setBackgroundDrawable(0);
Salman666
fuente
El método setBackgroundDrawable (Drawable) en el tipo Vista no es aplicable para los argumentos (int)
Tobrun
2

Mejor rendimiento en este método:

imageview.setBackgroundResource(R.drawable.location_light_green);

Utilizar este.

Mahmudul
fuente
1

Este trabajo para mi:

yourview.setBackground(null);
lscofield
fuente
0

Use setBackgroundColor(Color.TRANSPARENT)para establecer el fondo como transparente, o use setBackgroundColor(0). Aquí Color.TRANSPARENTestá el atributo predeterminado de la clase de color. Funcionará bien

anand krish
fuente
0

Tengo un escenario de caso y probé todas las respuestas de arriba, pero siempre se creaba una nueva imagen sobre la anterior. La solución que funcionó para mí es:

imageView.setImageResource(R.drawable.image);
Đorđe Nilović
fuente
0

Además de las excelentes respuestas, si desea lograr esto a través de xml, puede agregar:

android:background="@android:color/transparent

a su vista

Jeel Shah
fuente
0

Primero, debes escribir en formato XML:

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

luego use esto para mostrarlo usando Java:

myimage.setVisibility(SHOW); //HIDE
SRam
fuente
¿Qué es? ¿Para qué?
CoolMind