写了歌Demo测试ViewPager的显示,发现一些问题:
public class MyViewpagerAdapter extends PagerAdapter {
private String[] title = {"title1", "ttlte2", "title3"};
@Override
public int getCount() {
return title.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
// 很奇怪, 这样构造,发现页面是空白的
View view = View.inflate(container.getContext(), R.layout.main_activity2_fragment_item, container);
return view;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return title[position];
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
很简单的一个Adapter,确发现ViewPager显示是空白的
如果是instantiateItem 里面直接构造View确实可以的
TextView textView = new TextView(container.getContext());
textView.setText("sdfsdfsdf");
container.addView(textView);
改成这样也是可以显示:
View view = View.inflate(container.getContext(), R.layout.main_activity2_fragment_item, null);
container.addView(view);
跟踪了ViewPager代码,发现 View.inflate 是会执行AddView的方法,也Debug也能看到ViewPager的ChildView 有值,但是就是显示不来很奇怪。