0
我正在研究包含五個選項卡的android應用程序。每個選項卡需要多個頁面,並且在選項卡上重新選擇,它應該放在每個選項卡的第一個片段上。以下是我的代碼;如何在我的Android應用程序中實現類似iOS的標籤功能
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;
}
如果您有具體問題,我們很樂意爲您效勞。但目前這個問題太寬泛了。這聽起來像你希望我們爲你做你的工作。如果你有一個具體的問題,請編輯你的問題來重新修改並添加一些你已經嘗試過的代碼,這將會有所幫助。閱讀幫助中心以獲取更多信息。 –
「每個標籤需要多個頁面」 - 這聽起來像一個糟糕的設計。你不應該在標籤頁面中有頁面。標籤應該是網頁本身 –
是的,但應用程序的要求是相同的。每個選項卡中都有多個頁面導航。例如,第一個片段顯示列表,當點擊任何列表項時,它會打開詳細信息,然後在同一個選項卡中詳細打開成員頁面。並且當再次重新選擇相同的標籤時,它應該進入第一頁即列表。 –