2012-06-24 23 views
5

Tengo un diseño como este:progressbar setVisible no trabajar

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
android:background="@drawable/menu_background" 
> 

<ProgressBar 
    android:id="@+id/aPBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    style="@android:style/Widget.ProgressBar.Inverse"/> 

... 

</RelativeLayout> 

Y en mi método onCreate hago esto para ocultar el ProgressBar en un primer momento:

LayoutInflater inflater = getLayoutInflater(); 
RelativeLayout layout = (RelativeLayout)inflater.inflate(R.layout.achievements_screen, null); 

progressBar=(ProgressBar)layout.findViewById(R.id.aPBar); 
progressBar.setVisibility(View.INVISIBLE); 

Pero el ProgressBar es aún visible todo el tiempo ... También probé View.GONE.

Cuando fijo

android:visible="gone" 

en el archivo XML, el ProgressBar doesnt aparecer, pero no puedo hacer que aparece con

progressBar.setVisibility(View.Visible); 
+0

parece que debería funcionar puede darle una idea del bit de bit donde está usando (agregando) esta vista de diseño –

+1

ok, lo puse en funcionamiento usando 'progressBar = (ProgressBar) findViewById (R.id.aPBar);' en lugar de 'progressBar = (ProgressBar) layout.findViewById (R.id.aPBar); 'pero no tengo idea de por qué funciona esto. Estoy agregando esta vista de diseño en el onCreate de mi actividad después de super.onCreate y setContentView – yon

Respuesta

0

Usted está inflando una nueva visión mediante el diseño Inflater. Esto es NO la vista actualmente en la pantalla.

Por lo tanto, cambiar su visibilidad no afectará a la interfaz de usuario de la pantalla.

Más arriba en su actividad debe haber llamado setContentView y esto es el diseño que está visible en su interfaz de usuario.

Por consiguiente, llamar:

findViewById volverá a su barra de progreso en la pantalla, pero llamar layout.findViewById devolverá que los diseños de barra de progreso (correctamente), pero ese no es el progressBar se puede ver en la pantalla.

0

Este trabajo para mí:

rootView.findViewById(R.id.progress_bar).setVisibility(View.GONE); 
0

Solución para mí era para ocultar la vista en XML y luego unhide/ocultarlo en tiempo de ejecución cuando sea necesario: android:visibility="gone"