Ver getVisibility () isShown () devolver visibilidad incorrecta
Tengo una vista que se agrega condicionalmente a los padres. Comprobar si ya se ha agregado a los padres o no, por desgracia, siempre devuelve su visible.
if (findViewById(R.id.bottom_bar).getVisibility == View.Visible) if (findViewById(R.id.bottom_bar).isShown())
Ambos devuelven true
incluso cuando la vista nunca fue añadida y no es visible.
getVisibility()
simplemente devuelve la visibilidad que desea que tenga la vista cuando se agrega a la ventana. No cambia a menos que llame a setVisibility()
. También no indica si la vista es realmente visible en la pantalla.
isShown()
es similar. Aquí está el doc:
Devuelve la visibilidad de esta vista y de todos sus antepasados
Devoluciones
Es cierto que esta vista y todos sus antepasados sonVISIBLE
He tenido que hacer algo similar y tiendo a preguntar a la vista si tiene un padre (myView.getParent ()! = Null) entonces supongo que la vista se ha agregado a otra vista. Con frecuencia, para ocultar la vista, la elimino del padre. También podría anular el método onDraw y si no recibe llamadas para dibujar, ciertamente no son visibles.
case R.id.title_call_button: if(llButtonCallNow.getVisibility() != View.VISIBLE){ llButtonCallNow.setVisibility(View.VISIBLE); } else{ llButtonCallNow.setVisibility(View.GONE); Toast.makeText(getBaseContext(), ("Im here baby :)"), Toast.LENGTH_SHORT).show(); } break;
Si findViewById(R.id.bottom_bar)
devuelve no nulo, entonces al menos un bottom_bar View ya está instanciado en algún lugar de la jerarquía View. Ese es su cheque.