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 ​​son VISIBLE

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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.