Hacer un botón transparente y luego opaco nuevamente en Android
-
28-10-2019 - |
Pregunta
Tengo un juego en el que estoy usando 12 botones sin texto para mostrar vidas. Cada vez que pierden una vida, este código se ejecuta
public void guessesRemainingDisplay(int numberOfGuesses) {
int guessesRemaining;
guessesRemaining = maximumGuesses + 1 - numberOfGuesses;
switch(guessesRemaining) {
case 1:
findViewById(R.id.Guess1).setBackgroundColor(color.transparent);
break;
case 2:
findViewById(R.id.Guess2).setBackgroundColor(color.transparent);
break;
case 3:
findViewById(R.id.Guess3).setBackgroundColor(color.transparent);
break;
case 4:
findViewById(R.id.Guess4).setBackgroundColor(color.transparent);
break;
case 5:
findViewById(R.id.Guess5).setBackgroundColor(color.transparent);
break;
case 6:
findViewById(R.id.Guess6).setBackgroundColor(color.transparent);
break;
case 7:
findViewById(R.id.Guess7).setBackgroundColor(color.transparent);
break;
case 8:
findViewById(R.id.Guess8).setBackgroundColor(color.transparent);
break;
case 9:
findViewById(R.id.Guess9).setBackgroundColor(color.transparent);
break;
case 10:
findViewById(R.id.Guess10).setBackgroundColor(color.transparent);
break;
case 11:
findViewById(R.id.Guess11).setBackgroundColor(color.transparent);
break;
case 12:
findViewById(R.id.Guess12).setBackgroundColor(color.transparent);
break;
}
}
Y el botón más derecho más recto desaparece (están en una línea, 1 a la izquierda 12 a la derecha).
Sin embargo, cuando comienzo un nuevo juego, o cuando la actividad se abre por primera vez, este código se ejecuta
findViewById(R.id.Guess1).setBackgroundColor(color.X);
Repetido para cada identificación. X Ser literalmente de cualquier color (lo he probado con un montón de diferentes). Por alguna razón, si este código se ejecuta, el botón desaparece. ¿Por qué? Si no se ejecuta, aparecen los 12 botones, pero cada vez que empiezo un nuevo juego obviamente los botones que han desaparecido debido a perder vidas no vuelven.
Solución
Para tu tarea es mejor usar findViewById(R.id.id).setVisibility(View.Invisible)
para desaparecer y 'findViewByid (r.id.id) .setVisibility (ver.visible)' para devolver la vista.