SwipeRefreshLayout sin animación en la creación de fragmentos

Estoy utilizando android.support.v4.widget.SwipeRefreshLayout con android.support.v7.widget.RecyclerView .
En la creación de la vista de fragmentos necesito mostrar la animación SwipeRefreshLayout . Pero cuando llamo setRefreshing(true) no pasa nada. Pero cuando actualizo los cambios de animación de datos.
Supongo que la animación no se muestra sin el niño dentro de SwipeRefreshLayout .
¿Cómo mostrar esta animación de la mejor manera?

Se trata de un error informado (se informa aquí ) y una solución está disponible:

 mSwipeRefreshLayout.setProgressViewOffset(false, 0, (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics())); mSwipeRefreshLayout.setRefreshing(true); 

Gracias chicos.

Sólo me he dado cuenta de que la solución más fácil es llamar method measure (int, int) con valores distintos de cero) antes de llamar a setRefreshing (true). El problema está sucediendo porque setRefreshing (true) está llamando antes de onMeasure.

Así que usted necesita llamar a:

 swipeRefreshLayout.measure(initialWidth, initialHeight); swipeRefreshLayout.setRefreshing(true); 

Depende del nivel de API en el que esté creando – si está usando hasta API 20, entonces puede activar setRefreshing (true), esto ejecutará la animación en ActionBar, pero en API 21 (Material Design) ellos Cambió el progreso para ser un spinner de lo que es "sacado a la vista" antes de que gire

Usted tiene 2 maneras de conseguir alrededor de esto en la API 21: 1) cambio de la ruleta hacia abajo con setProgressViewOffset (), pero recuerde cambiarlo de nuevo afterwords (nota que esto funciona en px, mientras que setDistanceToTriggerSync () utiliza dp) 2) hacer un Duplicado que se muestra cuando se están cargando los datos

La solución más eficiente en el código es utilizar el hilandero existente, pero hay que tener cuidado de que reinicie su posición

Si necesita calcular la densidad de píxeles, puede agarrarla desde:

 DisplayMetrics metrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); float scale = metrics.density; 

SwipeRefreshLayout debe contener un niño para que funcione correctamente. Asegúrese de inicializarlo antes de usarlo en cualquier lugar!

Debe llamar a setRefreshing(true) después de onDraw() , de lo contrario no mostraría animación.

Así, en Actividad, puedes hacerlo en onCreate() , como esto:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // other codes new Handler().post(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(true); refreshing = true; refreshData(); } } } 

En fragmento, puede poner estos códigos en onActivityCreated() .

  • SwipeRefreshLayout con múltiples ListViews
  • Barra de herramientas que no se muestra con desplazamiento para actualizar
  • SwipeRefreshLayout interferir con setOnScrollListener
  • RecyclerView y SwipeRefreshLayout
  • SwipeRefreshLayout + ViewPager, limitar el desplazamiento horizontal solamente?
  • Android: CoordinatorLayout y SwipeRefreshLayout
  • ¿Cuál es la forma correcta de usar la barra de herramientas y SwipeRefreshLayout?
  • SyncAdapter siempre en estado pendiente
  • SwipeRefreshLayout Got Action_Move congela la vista
  • Estilo SwipeRefreshLayout en r21 de la biblioteca de soporte
  • La vista de Recycler no se desplaza correctamente después de implementar el desplazamiento para actualizar el diseño.
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.