Supprimer l'arrière-plan dessiné par programmation dans Android

128

Je souhaite supprimer l'arrière-plan dessiné par @drawable/bgprogrammation. Y-a-t-il un moyen de faire ça?

Actuellement, j'ai le XML suivant dans ma mise en page:

<?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
la source

Réponses:

316

Essaye ça

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

Vérifiez les fonctions setBackground dans la documentation RelativeLayout

Maragues
la source
4
J'obtiens cette erreur: La méthode setBackgroundResource (int) dans le type View n'est pas applicable pour les arguments (null)
UKDataGeek
2
Au cas où cela ne fonctionnerait pas: vérifiez si vous avez utilisé la propriété background et non android: src!
Chris Conway
3
setBackgroundDrawable est désormais obsolète. La réponse de @ Suraj ci-dessous est meilleure maintenant.
Anand Sainath
6
api 16? y a-t-il quelque chose pour api 8?
user1940676
1
Utilisez setBackgroundResource (0). comme répondu par @AdamStelmaszczyk. ,
Zar E Ahmer
70

setBackgroundResource(0)est la meilleure option. De la documentation :

Définissez l'arrière-plan d'une ressource donnée. La ressource doit faire référence à un objet Drawable ou 0 pour supprimer l'arrière-plan .

Cela fonctionne partout, car c'est depuis l'API 1.

setBackgrounda été ajouté beaucoup plus tard, dans l'API 16, donc cela ne fonctionnera pas si votre minSdkVersionest inférieur à 16.

Adam Stelmaszczyk
la source
2
Merci, m'a totalement sauvé après 4 heures de coup de tête. Ceci est très utile dans le cas où vous créez dynamiquement un bouton basculé (choix de 2 tirables) dans un événement onClick, mais que vous avez besoin d'un bouton visible à afficher avant que les boutons basculés ne prennent le relais (car rien ne s'affichera tant que l'événement de clic ne se produira fait, vous pouvez utiliser setBackgroundResource(0)pour supprimer votre ancien bouton "set" dessiné).
Azurespot
2
Cela devrait être la réponse choisie car c'est la meilleure solution à la fois en termes de gestion de la mémoire et de support au niveau de l'API.
gregtczap
47

Cela m'a aidé à supprimer la couleur d'arrière-plan, j'espère que cela aide quelqu'un. setBackgroundColor(Color.TRANSPARENT)

Suraj Bajaj
la source
3
Les drawables peuvent avoir un remplissage, donc si vous supprimez l'arrière-plan, vous devez également supprimer le remplissage.
Michał Kisiel
1
setBackgroundResource (0) est la meilleure option car, elle supprime complètement l'arrière-plan, réduisant ainsi le surdimensionnement.
Milan le
4

Essayez ce code:

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

aussi celui-ci fonctionne:

imgView.setImageResource(0); 

mais attention celui-ci ne fonctionne pas:

imgView.setImageResource(null); 
Adnan Abdollah Zaki
la source
4

J'essaye ce code dans Android 4+ :

view.setBackgroundDrawable(0);
Salman666
la source
La méthode setBackgroundDrawable (Drawable) dans le type View n'est pas applicable pour les arguments (int)
Tobrun
2

Meilleures performances sur cette méthode:

imageview.setBackgroundResource(R.drawable.location_light_green);

Utilisez ceci.

Mahmudul
la source
1

Ce travail pour moi:

yourview.setBackground(null);
lscofield
la source
0

Utilisez setBackgroundColor(Color.TRANSPARENT)pour définir l'arrière-plan comme transparent ou utilisez setBackgroundColor(0). Voici Color.TRANSPARENTl'attribut par défaut de la classe de couleur. Cela fonctionnera très bien.

anand krish
la source
0

J'ai un scénario de cas et j'ai essayé toutes les réponses d'en haut, mais toujours une nouvelle image a été créée par-dessus l'ancienne. La solution qui a fonctionné pour moi est:

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

En plus des excellentes réponses, si vous souhaitez y parvenir via xml, vous pouvez ajouter:

android:background="@android:color/transparent

à votre vue.

Jeel Shah
la source
0

Tout d'abord, vous devez écrire en format XML:

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

puis utilisez ceci pour le montrer en utilisant Java:

myimage.setVisibility(SHOW); //HIDE
SRam
la source
Qu'Est-ce que c'est? Pourquoi?
CoolMind