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>

Réponses:


316

Essaye ça

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

Vérifiez les fonctions setBackground dans la documentation RelativeLayout


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.


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)


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

4

J'essaye ce code dans Android 4+ :

view.setBackgroundDrawable(0);

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.



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.


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

0

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

android:background="@android:color/transparent

à votre vue.


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

Qu'Est-ce que c'est? Pourquoi?
CoolMind
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.