Rimozione colore di sfondo in Androidrimozione di colore di sfondo di una vista in Android
ho impostato backgroundColor
in codice come questo,
View.setBackgroundColor(0xFFFF0000);
come rimuovere questo colore di sfondo su qualche evento?
Rimozione colore di sfondo in Androidrimozione di colore di sfondo di una vista in Android
ho impostato backgroundColor
in codice come questo,
View.setBackgroundColor(0xFFFF0000);
come rimuovere questo colore di sfondo su qualche evento?
Si dovrebbe provare ad impostare il colore di sfondo a trasparente:
view.setBackgroundColor(0x00000000);
Ok, ho pensato che ci sarà qualcosa da rimuovere proprietà backgroundcolor. – sat
Poiché è un int, non penso che si possa "azzerare", questa risposta dovrebbe funzionare bene anche con 0x00AAF890 (o qualsiasi 0x00 ------) dato che i primi due 0 impostano l'opacità a 0% il che significa che non c'è colore di sfondo. –
View.setBackgroundColor(0);
funziona anche. Non è necessario mettere tutti quegli zeri.
È possibile utilizzare
View.setBackgroundColor(Color.TRANSPARENT);
o
View.setBackgroundColor(0);
Si ricorda che quasi tutto visibile sullo schermo si estende View, come un pulsante, TextView, ImageView, qualsiasi tipo di Layout, ecc ...
Color.TRANSPARENT sembra molto più pulito di 0x0000000. Hai il mio upvote! –
Tutti delle risposte sull'impostazione del colore a trasparente funzionerà tecnicamente. Ma ci sono due problemi con questi approcci:
Se si guarda a come funziona View.setBackgroundColor(int color)
vedrete una soluzione piuttosto semplice:
/**
* 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));
}
}
Il colore int
è solo convertito in un ColorDrawable
e poi passato a setBackground(Drawable drawable)
. Quindi la soluzione per rimuovere il colore di sfondo è ad appena nulla lo sfondo con:
myView.setBackground(null);
Questa è la risposta appropriata. Rendere trasparente lo sfondo richiede tempo di elaborazione, mentre _removing lo background_ no. – Sam
setBackground proviene da API 16, come posso fare per le API inferiori? –
Si potrebbe impostare a trasparente: View.setBackgroundColor (0x00000000); O android.R.color.transparent – Juhani
ha appena scoperto che, un altro modo per impostarlo su trasparente sarebbe, View.setBackgroundColor (Color.TRANSPARENT); – sat
Se si desidera utilizzare solo lo sfondo del genitore, è possibile rimuovere lo sfondo dell'intero bambino con: view.setBackgroundResource (0); –