TabLayout+ViewPager+Fragment實現底部導航
阿新 • • 發佈:2019-01-01
MainActivity extends AppCompatActivity {
private TabLayout mTabLayout;
//Tab 文字
private final int[] TAB_TITLES = new int[]{R.string.weixin,R.string.contacts,R.string.find,R.string.me};
//Tab 圖片
private final int[] TAB_IMGS = new int[]{R.drawable.tab_weixin_selector,R.drawable.tab_contacts_selector,R.drawable.tab_find_selector ,R.drawable.tab_me_selector};
//Fragment 陣列
private final Fragment[] TAB_FRAGMENTS = new Fragment[] {new WeiXinFragment(),new ContactsFragment(),new FindFragment(),new MeFragment()};
//Tab 數目
private final int COUNT = TAB_TITLES.length;
private MyViewPagerAdapter mAdapter;
private ViewPager mViewPager ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
mTabLayout = (TabLayout)findViewById(R.id.tablayout);
setTabs(mTabLayout,this.getLayoutInflater(), TAB_TITLES,TAB_IMGS);
mAdapter = new MyViewPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(mAdapter);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
}
/**
* @description: 設定新增Tab
*/
private void setTabs(TabLayout tabLayout,LayoutInflater inflater,int[] tabTitlees,int[] tabImgs){
for (int i = 0; i < tabImgs.length; i++) {
TabLayout.Tab tab = tabLayout.newTab();
View view = inflater.inflate(R.layout.tab_custom,null);
tab.setCustomView(view);
TextView tvTitle = (TextView)view.findViewById(R.id.tv_tab);
tvTitle.setText(tabTitlees[i]);
ImageView imgTab = (ImageView) view.findViewById(R.id.img_tab);
imgTab.setImageResource(tabImgs[i]);
tabLayout.addTab(tab);
}
}
/**
* @description: ViewPager 介面卡
*/
private class MyViewPagerAdapter extends FragmentPagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return TAB_FRAGMENTS[position];
}
@Override
public int getCount() {
return COUNT;
}
}
}