wake-up-neo.com

entfernen der Hintergrundfarbe einer Ansicht in Android

Hintergrundfarbe in Android entfernen 

Ich habe backgroundColor im Code so gesetzt,

View.setBackgroundColor(0xFFFF0000);

Wie entferne ich diese Hintergrundfarbe bei einem Ereignis?

28
sat

Sie sollten versuchen, die Hintergrundfarbe auf transparent zu setzen:

view.setBackgroundColor(0x00000000);

45
kiki

Sie können verwenden

View.setBackgroundColor(Color.TRANSPARENT);

oder 

View.setBackgroundColor(0);

Bitte denkt daran fast alles, was auf dem Bildschirm sichtbar ist, erweitert die Ansicht, wie ein Button, TextView, ImageView, beliebige Layouts usw.

32
Zeus

View.setBackgroundColor(0); funktioniert auch. Es ist nicht notwendig, all diese Nullen zu setzen.

4
The Berga

Alle Antworten zum Einstellen der Farbe auf transparent funktionieren technisch . Bei diesen Ansätzen gibt es jedoch zwei Probleme:

  1. Sie erhalten am Ende overdraw .
  2. Es gibt einen besseren Weg:

Wenn Sie sich die Funktionsweise von View.setBackgroundColor(int color) ansehen, sehen Sie eine ziemlich einfache Lösung:

/**
 * Sets the background color for this view.
 * @param color the color of the background
 */
@RemotableViewMethod
public void setBackgroundColor(@ColorInt int color) {
    if (mBackground instanceof ColorDrawable) {
        ((ColorDrawable) mBackground.mutate()).setColor(color);
        computeOpaqueFlags();
        mBackgroundResource = 0;
    } else {
        setBackground(new ColorDrawable(color));
    }
}

Die Farbe int wird nur in eine ColorDrawable konvertiert und dann an setBackground(Drawable drawable) übergeben. Die Lösung zum Entfernen der Hintergrundfarbe besteht also darin, den Hintergrund einfach mit Null zu löschen:

myView.setBackground(null);
3
tir38