我正在尝试ViewPager
像这样使用 Tabs 实现:
片段的布局是使用 Facebook 的 Litho 渲染的,但这里的问题是只加载了第一项,在本例中为“Look”。见代码:
MainActivity
:
public class MainActivity extends AppCompatActivity {
private FragmentPagerAdapter mPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
private final Fragment[] mFragments = new Fragment[]{
new Look(),
new Chat(),
new Flirt(),
new Friends(),
new Me(),
};
@Override
public Fragment getItem(int position) {
return mFragments[position];
}
@Override
public int getCount() {
return mFragments.length;
}
};
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setOffscreenPageLimit(3);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setTabTextColors(Color.parseColor("#616161"), Color.parseColor("#ffffff"));
tabLayout.setupWithViewPager(mViewPager);
tabLayout.getTabAt(0).setText("LOOK");
tabLayout.getTabAt(1).setText("CHAT");
tabLayout.getTabAt(2).setText("FLIRT");
tabLayout.getTabAt(3).setText("ADD");
tabLayout.getTabAt(4).setText("ME");
findViewById(R.id.options).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Options.class);
startActivity(i);
}
});
}
}
而且,为了简单起见,我们假设所有片段(Look、Chat、...)在其 onCreateView 方法中都有相同的代码:
public class Flirt extends Fragment {
public Flirt() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final ComponentContext contex = new ComponentContext(getContext());
final Component component = Text.create(contex)
.text("Hello World")
.textSizeDip(50)
.textColor(Color.GRAY)
.build();
return LithoView.create(contex, component);
}
}
预计在创建 MainActivity 时会加载五个 Fragment 的视图,但只显示第一个,无论是哪个。我究竟做错了什么?我怎么能得到它?
编辑:
如果我更改mViewPager.setOffscreenPageLimit(4)
为(0)
,我会得到所有视图都会被加载,但是会一个一个地加载,并且每次它们处于焦点时都会加载它们,这是不希望的。我想要得到的是五个页面会同时加载,而且只加载一次。