Qué está pasando: Las dos primeras páginas de ViewPager se cargan muy bien (ViewPager carga automáticamente + -1 desde la página actual). Cuando pasa de un lado a otro, las siguientes páginas no aparecen. Demostración GIF del problema a continuación.ViewPager + PagerAdapter muestra páginas en blanco después de los dos primeros elementos
información de depuración: Las páginas son se crea una instancia (ver código de abajo) y se añaden con éxito a la ViewPager ArrayList<ItemInfo>mItems
(confirmado a través de mensajes de registro). Me recompilado la biblioteca android.support.v4
con debug = conjunto verdadero (mmm frameworks/support/v4/
en AOSP) y se nota que todo funcione perfectamente SALVO:
Los métodos OnLayout y onMeasure en ViewPager dejan de ser llamado después de los primeros dos puntos de vista se cargan. Esto significa que las otras páginas son negras porque nunca se midieron & dispuestas como deberían haber sido. Traté de agregar diferentes llamadas requestLayout() en diferentes puntos para forzar una actualización del árbol de diseño en vano.
Antecedentes: Tengo un ViewPager instanciado a través de inflater.inflate y encontrado a través de view.findViewById (R.layouy.myid). Que está reemplazando directamente un viejo Vista de la galería, y para fines de prueba del PagerAdapter instantiateItem (recogida, posición) simplemente hace esto:
@Override
public Object instantiateItem(View collection, final int position) {
final TextView tv = new TextView(collection.getContext());
tv.setText("Looking at page " + position);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.rgb((int)(Math.random()*100), (int)(Math.random()*100), (int)(Math.random()*100)));
tv.setTextSize(22);
((ViewPager) collection).addView(tv);
return tv;
}
¿Alguna idea? Me parece que algunos misterios en los padres de PageView están deshabilitando de alguna manera en el diseño PageView
[Demo GIF del problema (imgur)] (http://i.stack.imgur.com/YPsJr.gif) –
¿implementó 'destroyItem' en su adaptador? http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#destroyItem(android.view.ViewGroup, int, java.lang.Object) –
Sí, exactamente como se recomienda: 'destroyItem (Ver c, int p, Objeto v) {((ViewPager) c). Eliminar Vista ((Ver) v); } 'y funciona perfectamente en mi aplicación de prueba. –