TabLayout一般不报错还没效果,那就先检查下面这几项是否使用了。。。

TabLayout使用:

首先导入依赖:implementation 'com.android.support:design:28.0.0'

设置模式:setTabMode(TabLayout.MODE_SCROLLABLE)或在控件设置;

关联:tabLayout.setupWithViewPager(pager);

适配器重写:getPageTitle(int position)方法

在大佬这借个效果图https://blog.csdn.net/Bu_siliang/article/details/80506070

  • 下面是布局的写法:(注意tabMode设置模式?固定:滑动
             
  • 标签自定义模拟数据,我是根据标签的页数创建的Fragment,加载到ViewPager中
  • 静态工厂创建Fragmenthttps://blog.csdn.net/weixin_43917449/article/details/86176623
                /**                 * 先找控件                 */                //添加标题                String  tabs = new String[]{"tab1,tab2,tab3,tab4,tab5,tab6"};                for (int i = 0; i < tabs.length; i++) {                    //循环添加标签                    tabLayout.addTab(tabLayout.newTab().setText(tabs[i]));                    //循环创建fragment                    fragments.add(ChildFragment.newInstance(i));                }                //适配器                MainPagerAdapter adapter = new MainPagerAdapter(getChildFragmentManager(), tabs, fragments);                pager.setAdapter(adapter);                //tablayout关联Viewpager                tabLayout.setupWithViewPager(pager);
  • Fragment利用的事动态创建,需要创建静态工厂,最后放置viewpager,这个方法写在上面代码下面即可;
 //静态工厂    public static MainFragment newInstance(int index) {        MainFragment mainFragment = new MainFragment();        Bundle args = new Bundle();        args.putInt("index", index);        mainFragment.setArguments(args);        return mainFragment;    }

Step:适配器写法:

 在适配器里面就是集成FragmentPageAdapter,切记传入getSupportFragmentManager();因为我的是继承父类
Fragment所以要拿到他的子类,要自主重写 getPageTitle(int position)方法,不然不展示标题;

public class MainPagerAdapter extends FragmentPagerAdapter {    private String[] tabs;    private ArrayList fragments;    public MainPagerAdapter(FragmentManager childFragmentManager, String[] tabs, ArrayList fragments) {        super(childFragmentManager);        this.tabs = tabs;        this.fragments = fragments;    }    /**     * 获取每一个Fragment的页面     * @param i     * @return     */    @Override    public Fragment getItem(int i) {        return fragments.get(i);    }    /**     * 标签数量-->也就是ViewPager内的Fragment页数     *     * @return     */    @Override    public int getCount() {        return fragments.size();    }    /**     * 内置代码:获取每一个标签页--->赋值     *     * @param position     * @return     */    @Nullable    @Override    public CharSequence getPageTitle(int position) {        return tabs[position];    }}

 

 

更多相关文章

  1. Android官方文档之App Resources(下)
  2. Android(安卓)TabHost(简易用法)
  3. Android(安卓)下拉列表框(spinner)
  4. Android(安卓)studio添加按钮点击进入下一页
  5. Fresco源码解析 - 创建一个ImagePipeline(一)
  6. Android(安卓)studio创建assets目录并且利用webView加载html
  7. android之Activity的Tasks and Back Stack
  8. 内容为引用别人的文章,备自己学习之用.
  9. Android(安卓)AMS(一) App启动过程之Task,进程创建流程

随机推荐

  1. Android的android:clipChildren属性
  2. Android开发视频教程大总结—23部视频教
  3. Android版块开发资源大汇总
  4. Android之layout属性介绍
  5. 玩转Android---UI篇---TextView(文本框)
  6. Andriod AOA协议通信总结
  7. Akita 一套Android快速开发库 发布1.2版
  8. Android与js交互实例
  9. [转]android单元测试初探——Instrumenta
  10. Android(安卓)Developers 系列 01 - Intr