Android之TabLayout常见问题解决+TabLayout+ViewPager实现标签页面联动
16lz
2021-01-26
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]; }}
更多相关文章
- Android官方文档之App Resources(下)
- Android(安卓)TabHost(简易用法)
- Android(安卓)下拉列表框(spinner)
- Android(安卓)studio添加按钮点击进入下一页
- Fresco源码解析 - 创建一个ImagePipeline(一)
- Android(安卓)studio创建assets目录并且利用webView加载html
- android之Activity的Tasks and Back Stack
- 内容为引用别人的文章,备自己学习之用.
- Android(安卓)AMS(一) App启动过程之Task,进程创建流程