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>
Emkey
quelle

Antworten:

316

Versuche dies

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

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

Maragues
quelle
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.

Adam Stelmaszczyk
quelle
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)

Suraj Bajaj
quelle
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); 
Adnan Abdollah Zaki
quelle
4

Ich versuche diesen Code in Android 4+ :

view.setBackgroundDrawable(0);
Salman666
quelle
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.

Mahmudul
quelle
1

Diese Arbeit für mich:

yourview.setBackground(null);
lscofield
quelle
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.

anand krish
quelle
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);
Đorđe Nilović
quelle
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.

Jeel Shah
quelle
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
SRam
quelle
Was ist es? Wozu?
CoolMind