如果要在Navigation View下加入Tab View,就需要以Fragment的架構加入Tablayout和ViewPager
1.先建立一個layout,fragment_layout.xml,設定Tablayout和ViewPager的佈局
2.新增要切換的分頁layout及Fragment(Fragment1.java、Fragment2.java)
3.新增一個TabsPagerAdapter.java
這邊如果是extands FragmentPagerAdapter的話,要切換的View就不適合為像ListView這種動態的View(第二次點擊後畫面會無法顯示),但只要改成extends FragmentStatePagerAdapter就可以了
4.新增FragmentLayout.java,使用fragment_layout.xml的佈局,並設定PagerAdapter
執行結果:
1.先建立一個layout,fragment_layout.xml,設定Tablayout和ViewPager的佈局
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical"> | |
<android.support.design.widget.TabLayout | |
android:id="@+id/tabs" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
app:tabGravity="fill" | |
app:tabMode="fixed" /> | |
<android.support.v4.view.ViewPager | |
android:id="@+id/pager" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"></android.support.v4.view.ViewPager> | |
</LinearLayout> |
2.新增要切換的分頁layout及Fragment(Fragment1.java、Fragment2.java)
3.新增一個TabsPagerAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TabsPagerAdapter extends FragmentPagerAdapter { | |
//分頁數量 | |
private int NUM_ITEMS = 2; | |
public TabsPagerAdapter(FragmentManager fm, int tabCount) { | |
super(fm); | |
} | |
//要切換的Fragment | |
@Override | |
public Fragment getItem(int position) { | |
switch (position) { | |
case 0: | |
return new Fragment1(); | |
case 1: | |
return new Fragment2(); | |
default: | |
return null; | |
} | |
} | |
@Override | |
public int getCount() { | |
return NUM_ITEMS; | |
} | |
} |
4.新增FragmentLayout.java,使用fragment_layout.xml的佈局,並設定PagerAdapter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class FragmentLayout extends Fragment { | |
private TabLayout mTablayout; | |
private ViewPager pager; | |
TabsPagerAdapter myAdapter; | |
@Override | |
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | |
View v = inflater.inflate(R.layout.fragment_layout, container, false); | |
pager = (ViewPager) v.findViewById(R.id.pager); | |
mTablayout = (TabLayout) v.findViewById(R.id.tabs); | |
mTablayout.addTab(mTablayout.newTab().setText("Fragment1")); | |
mTablayout.addTab(mTablayout.newTab().setText("Fragment2")); | |
myAdapter = new TabsPagerAdapter(getFragmentManager(), mTablayout.getTabCount()); | |
pager.setAdapter(myAdapter); | |
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTablayout)); | |
mTablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { | |
@Override | |
public void onTabSelected(TabLayout.Tab tab) { | |
pager.setCurrentItem(tab.getPosition()); | |
} | |
@Override | |
public void onTabUnselected(TabLayout.Tab tab) { | |
} | |
@Override | |
public void onTabReselected(TabLayout.Tab tab) { | |
} | |
}); | |
return v; | |
} | |
} |
執行結果:
留言
張貼留言