Entfernen Sie den programmierbaren Hintergrund in Android


128

Ich möchte den @drawable/bgprogrammierbar zeichnbaren Hintergrund entfernen . Gibt es eine Möglichkeit, das zu tun?

Derzeit habe ich folgendes XML in meinem Layout:

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

Antworten:


316

Versuche dies

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

Überprüfen Sie die setBackground-Funktionen in der RelativeLayout-Dokumentation


4
Ich erhalte diesen Fehler: Die Methode setBackgroundResource (int) im Typ View ist nicht anwendbar für die Argumente (null)
UKDataGeek

2
Falls das nicht funktioniert: Überprüfen Sie, ob Sie die Eigenschaft background und nicht android: src verwendet haben!
Chris Conway

3
setBackgroundDrawable ist jetzt veraltet. @ Surajs Antwort unten ist jetzt besser.
Anand Sainath

6
API 16? Gibt es etwas für API 8?
user1940676

1
Verwenden Sie setBackgroundResource (0). wie von @AdamStelmaszczyk beantwortet. ,
Zar E Ahmer

70

setBackgroundResource(0)ist die beste Option. Aus der Dokumentation :

Stellen Sie den Hintergrund auf eine bestimmte Ressource ein. Die Ressource sollte sich auf ein Drawable-Objekt oder 0 beziehen , um den Hintergrund zu entfernen .

Es funktioniert überall, weil es seit API 1 ist.

setBackgroundwurde viel später in API 16 hinzugefügt, sodass es nicht funktioniert, wenn Ihr minSdkVersionWert unter 16 liegt.


2
Danke, habe mich nach 4 Stunden Headbangen total gerettet. Dies ist sehr nützlich, wenn Sie in einem onClick-Ereignis dynamisch eine umgeschaltete Schaltfläche (Auswahl von 2 Drawables) erstellen, aber eine sichtbare Schaltfläche benötigen, die angezeigt wird, bevor Ihre umgeschalteten Elemente die Kontrolle übernehmen (da nichts angezeigt wird, bis das Klickereignis eintritt setBackgroundResource(0)Wenn Sie dies tun , können Sie Ihren früheren "Set" -Button entfernen.
Azurespot

2
Dies sollte die gewählte Antwort sein, da dies sowohl hinsichtlich der Speicherverwaltung als auch der Unterstützung auf API-Ebene die beste Lösung ist.
Gregtczap

47

Dies hat mir geholfen, die Hintergrundfarbe zu entfernen, hoffe, es hilft jemandem. setBackgroundColor(Color.TRANSPARENT)


3
Drawables können Polster haben. Wenn Sie also Hintergrund entfernen, müssen Sie auch Polster entfernen.
Michał Kisiel

1
setBackgroundResource (0) ist die beste Option, da der Hintergrund vollständig entfernt wird, wodurch das Überziehen verringert wird.
Mailand

4

Versuchen Sie diesen Code:

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

auch dieser funktioniert:

imgView.setImageResource(0); 

aber sei vorsichtig, das funktioniert nicht:

imgView.setImageResource(null); 

4

Ich versuche diesen Code in Android 4+ :

view.setBackgroundDrawable(0);

Die Methode setBackgroundDrawable (Drawable) im Typ View gilt nicht für die Argumente (int)
Tobrun

2

Beste Leistung bei dieser Methode:

imageview.setBackgroundResource(R.drawable.location_light_green);

Benutze das.



0

Verwenden Sie setBackgroundColor(Color.TRANSPARENT)diese Option , um den Hintergrund als transparent festzulegen, oder verwenden Sie setBackgroundColor(0). Hier Color.TRANSPARENTist das Standardattribut aus der Farbklasse. Es wird gut funktionieren.


0

Ich habe ein Fallszenario und habe alle Antworten von oben ausprobiert, aber es wurde immer ein neues Bild über dem alten erstellt. Die Lösung, die für mich funktioniert hat, ist:

imageView.setImageResource(R.drawable.image);

0

Wenn Sie dies über XML erreichen möchten, können Sie zusätzlich zu den hervorragenden Antworten Folgendes hinzufügen:

android:background="@android:color/transparent

zu Ihrer Ansicht.


0

Zuerst müssen Sie im XML-Layout schreiben:

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

Verwenden Sie dies dann, um es mit Java anzuzeigen:

myimage.setVisibility(SHOW); //HIDE

Was ist es? Wozu?
CoolMind
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.