Cosa succede: le prime due pagine ViewPager sono state caricate correttamente (ViewPager carica automaticamente + -1 dalla pagina corrente). Quando scorri questi passaggi, le prossime pagine non vengono visualizzate. Demo GIF del problema qui sotto.ViewPager + PagerAdapter mostra pagine vuote dopo i primi due elementi
informazioni di debug: Le pagine sono essere istanziati (vedi codice qui sotto) e vengono aggiunti con successo alla ViewPager ArrayList<ItemInfo>mItems
(confermato tramite messaggi di log). Ho ricompilato la biblioteca android.support.v4
con il debug = true set (mmm frameworks/support/v4/
in AOSP) e si vede tutto perfettamente funzionante TRANNE:
I metodi onLayout e onMeasure in ViewPager smettere di essere chiamato dopo che i primi due punti di vista sono stati caricati. Ciò significa che le altre pagine sono nere perché non sono mai state misurate & disposte come avrebbero dovuto essere. Ho provato ad aggiungere diverse chiamate requestLayout() in punti diversi per forzare un aggiornamento dell'albero di layout senza alcun risultato.
Sfondo: Ho un ViewPager istanziato tramite inflater.inflate e trovato tramite view.findViewById (R.layouy.myid). E 'sostituire direttamente un vecchio vista galleria, e per scopi di test del PagerAdapter instantiateItem (raccolta, posizione) fa semplicemente questo:
@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;
}
Tutte le idee? Mi sembra che alcune impostazioni misteriose nei genitori di PageView stiano in qualche modo disabilitando onLayout PageView
[GIF Demo del problema (imgur)] (http://i.stack.imgur.com/YPsJr.gif) –
hai implementato 'destroyItem' nell'adattatore? http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#destroyItem(android.view.ViewGroup, int, java.lang.Object) –
Sì, esattamente come consigliato: 'destroyItem (Visualizza c, int p, Object v) {((ViewPager) c) .removeView ((View) v); } 'e funziona perfettamente nella mia app di test. –