【发布时间】:2016-09-14 16:53:17
【问题描述】:
我正在开发包含五个选项卡的 android 应用程序。每个选项卡都需要多个页面,并且在重新选择选项卡时,它应该继续每个选项卡的第一个片段。以下是我的代码;
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.icon_discover));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.icon_my_cuddll));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.helpicon_feedback));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.icon_notifications));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.icon_user));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final PagerAdaptor adapter = new PagerAdaptor
(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
if(tab.getPosition()==4)
{
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.getIcon().setColorFilter(Color.parseColor("#87243D"), PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
我的寻呼机适配器类如下:
public class PagerAdaptor extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdaptor(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
CuddllFragment tab1 = new CuddllFragment ();
return tab1;
case 1:
MyCuddllFragment tab2 = new MyCuddllFragment();
return tab2;
case 2:
// CuddllConversationFragment tab3 = new CuddllConversationFragment();
ConversationFragment conversationFragment = new ConversationFragment();
return conversationFragment;
case 3:
// CuddllNotificationsFragment tab4 = new CuddllNotificationsFragment();
Tab4ContainerFragment notificationPageFragment = new Tab4ContainerFragment();
return notificationPageFragment;
case 4:
MyProfileFragment tab5 = new MyProfileFragment();
return tab5;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
【问题讨论】:
-
如果您有具体问题,我们很乐意为您提供帮助。但是这个问题现在太宽泛了。听起来您希望我们为您完成工作。如果您有特定问题,请编辑您的问题以重新表述并添加一些您迄今为止尝试过的代码会有所帮助。阅读帮助中心了解更多信息。
-
“每个标签都需要多个页面”——这听起来像是一个糟糕的设计。您不应该在选项卡中包含页面。标签应该是页面本身
-
是的,但应用程序要求相同。每个选项卡中有多个页面导航。例如,当单击任何列表项时,第一个片段显示列表,然后它将打开详细信息,然后详细信息在同一选项卡中打开成员页面。当再次重新选择相同的选项卡时,它应该进入第一页,即列表。
标签: android android-layout android-fragments android-viewpager android-tablayout