Fragment+Viewpager+Tablayout组合实现底部标签栏

话不多说,先上图

Fragment+Viewpager+Tablayout组合实现底部标签栏_第1张图片

前两篇文章都提到了fragment和viewpager,那我就简要地介绍下Tablayout吧

Tablayout

继承自HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在App中。

实现步骤

  1. activity_main2.xml                                                                                                                                                                     
    
    
        
            
        
        
        
        
    

    2.Main2Activity.java                                                                                                                                                                      

    public class Main2Activity extends AppCompatActivity implements BlankFragment.selectListener {
        private static final String TAG = "Main2Activity";
        private TabLayout mTabLayoutm;
        private List mListm = new ArrayList<>();
        //mTempFragment是用来记录当前fragment
        private Fragment mTempFragment;
        //image 和 image2是选择与未选中的图片集合
        private int[] image = {R.drawable.home,R.drawable.zhibo_select,R.drawable.me};
        private int[] image2 = {R.drawable.home_unselect,R.drawable.zhibo_unselect,R.drawable.me_unselect};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
            mTabLayoutm = findViewById(R.id.tablayout3);
    
            Fragment fragment1 = new BlankFragment();
            Fragment fragment2 = new BlankFragment1();
            Fragment fragment3 = new BlankFragment2();
            mListm.add(fragment1);
            mListm.add(fragment2);
            mListm.add(fragment3);
            mTempFragment = mListm.get(0);
    
            //replace方式载入fragment
            getSupportFragmentManager().beginTransaction().replace(R.id.home_container,mListm.get(0))
                     .setCustomAnimations(
                    R.anim.slide_right_in,
                    R.anim.slide_left_out).commit();
    
            //设置监听事件
            mTabLayoutm.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    //根据标签栏替换fragment
                    switchFragment(mListm.get(tab.getPosition()));
                    //设置标签栏的选中与未选中
                    for(int i=0;i

    这里有个小坑:

         addTab必须在setOnTabSelectedListener之后调用,否则setOnTabSelectedListener不会回调,这样会造成初始化时,图标没有默认选中。

你可能感兴趣的:(Fragment+Viewpager+Tablayout组合实现底部标签栏)