何が起こっているのか:最初の2つのViewPagerページが適切にロードされました(ViewPagerは現在のページから+ -1を自動的にロードします)。これらを超えてスクロールしても、次のページは表示されません。以下の問題のGIFデモ。
デバッグ情報:ページがインスタンス化され(以下のコードを参照)、ViewPagerに正常に追加されますArrayList<ItemInfo>mItems
(ログメッセージで確認されます)。( aospで)android.support.v4
debug = trueを設定してライブラリを再コンパイルしましたが、以下を除いてすべてが完全に機能していることが示されています。mmm frameworks/support/v4/
ViewPagerのonLayoutメソッドとonMeasureメソッドは、最初の2つのビューがロードされた後に呼び出されなくなります。これは、他のページが本来のように測定および配置されていないため、黒であることを意味します。レイアウトツリーの更新を強制的に無効にするために、さまざまなポイントでさまざまなrequestLayout()呼び出しを追加してみました。
背景:inflater.inflateを介してインスタンス化され、view.findViewById(R.layouy.myid)を介して見つかったViewPagerがあります。これは古いギャラリービューを直接置き換えており、テストの目的で、PagerAdapter instanceiateItem(collection、position)は単にこれを行います。
@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;
}
何か案は?PageViewの親のいくつかの謎の設定がどういうわけかonLayoutPageViewを無効にしているように私には見えます