web-dev-qa-db-fra.com

supprimer la couleur de fond d'une vue dans Android

Supprimer la couleur de fond dans Android 

J'ai mis backgroundColor dans le code comme ceci,

View.setBackgroundColor(0xFFFF0000);

Comment supprimer cette couleur de fond sur certains événements?

28
sat

View.setBackgroundColor(0); fonctionne également. Il n'est pas nécessaire de mettre tous ces zéros.

4
The Berga

Toutes les réponses concernant le réglage de la couleur sur transparent fonctionneront techniquement. Mais ces approches posent deux problèmes:

  1. Vous allez vous retrouver avec overdraw .
  2. Il y a un meilleur moyen:

Si vous regardez comment fonctionne View.setBackgroundColor(int color), vous verrez une solution assez simple:

/**
 * 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));
    }
}

La couleur int est simplement convertie en ColorDrawable et ensuite transmise à setBackground(Drawable drawable). La solution pour supprimer la couleur de fond consiste donc simplement à supprimer le fond avec:

myView.setBackground(null);
3
tir38