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>

Respuestas:


316

Prueba esto

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

Verifique las funciones setBackground en la documentación RelativeLayout


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.


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)


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

4

Intento este código en Android 4+ :

view.setBackgroundDrawable(0);

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.



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


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

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


0

Primero, debes escribir en formato XML:

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

luego use esto para mostrarlo usando Java:

myimage.setVisibility(SHOW); //HIDE

¿Qué es? ¿Para qué?
CoolMind
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.