Tablayout的应用

来源:互联网 发布:linux压缩成zip 编辑:程序博客网 时间:2024/05/21 10:50
 //Android studio想应用Tablayout首先要导入依赖库,design
//布局
 <android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:id="@+id/mytab"
        app:tabGravity="center"
        app:tabIndicatorColor="@color/colorAccent"
        app:tabMode="scrollable"
        app:tabSelectedTextColor="@color/colorPrimaryDark"
        app:tabTextColor="@color/colorPrimary"
        ></android.support.design.widget.TabLayout>


  //java代码
 TabLayout myTab=findViewById(R.id.mytab);
        //添加选项卡
        myTab.addTab(myTab.newTab().setText("新闻"));
        myTab.addTab(myTab.newTab().setText("社会"));
        myTab.addTab(myTab.newTab().setText("社会1"));
        myTab.addTab(myTab.newTab().setText("社会2"));
        myTab.addTab(myTab.newTab().setText("社会3"));
        myTab.addTab(myTab.newTab().setText("社会4"));
        //选项卡被选中的监听事件
        myTab.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                Toast.makeText(MainActivity.this,tab.getText().toString(),Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });


////================tablayout结合viewpager的使用===========================


        TabLayout myTab=findViewById(R.id.mytab);
        ViewPager viewPager=findViewById(R.id.vp);
        myTabs.add("推荐");
        myTabs.add("北京");
        myTabs.add("社会");
        myTabs.add("娱乐");
        myTabs.add("科技");
        myTabs.add("民生");
        myTabs.add("视频");
        //创建适配器
        viewPager.setAdapter(new MyVpAdapter(getSupportFragmentManager()));
        //将TabLayout与viewPager创建关联
        myTab.setupWithViewPager(viewPager);
    }
    class MyVpAdapter extends FragmentPagerAdapter{
        public MyVpAdapter(FragmentManager fm) {
            super(fm);
        }
        //返回每个页面的title
        @Override
        public CharSequence getPageTitle(int position) {
            return myTabs.get(position);
        }
        @Override
        public Fragment getItem(int position) {
            //position:页面的下标
            ContentFragment contentFragment=new ContentFragment();
            //传递参数

            Bundle bundle=new Bundle();//key:string vavle:object
            bundle.putString("title",myTabs.get(position));
            contentFragment.setArguments(bundle);
            return contentFragment;
        }
        //返回viewPager的加载的页面的数量
        @Override
        public int getCount() {
            return myTabs.size();
        }
    }