TabLayout+viewPager
来源:互联网 发布:端口测试失败 编辑:程序博客网 时间:2024/06/06 09:56
1.TabLayout
TabLayout控件用于应用中轻松的添加Tab分组功能,总共有两种类型可选。1.固定的Tabs:对应的xml配置中的 app:tabMode="fixed"
2.可滑动的Tabs:对应xml配置中的 app:tabMode="scrollable"。
TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容到2.2以上版本,包括2.2。接下来就简单使用一下。
先来布局:
这个很简单,再来一个适配器。
这个很简单,再来一个适配器。
- public class BlankFragment extends Fragment {
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- return inflater.inflate(R.layout.fragment_blank, container, false);
- }
- }
那么准备工作差不多了,开始进入主题,基本的介绍都加了注释
- public class TabLayoutActivity extends AppCompatActivity {
- ViewPager viewPager;
- TabLayout tabLayout;
- List<BlankFragment>fragmentList;
- List<String>stringList;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_tab_layout);
- viewPager = (ViewPager) findViewById(R.id.viewpager);
- tabLayout = (TabLayout) findViewById(R.id.tablayout_top);
- //添加fragment
- fragmentList = new ArrayList<>();
- fragmentList.add(new BlankFragment());
- fragmentList.add(new BlankFragment());
- fragmentList.add(new BlankFragment());
- fragmentList.add(new BlankFragment());
- //添加标题
- stringList = new ArrayList<>();
- stringList.add("热门新闻");
- stringList.add("热门推荐");
- stringList.add("本月热榜");
- stringList.add("今日热榜");
- //添加tab
- tabLayout.addTab(tabLayout.newTab().setText("热门新闻"));
- tabLayout.addTab(tabLayout.newTab().setText("热门推荐"));
- tabLayout.addTab(tabLayout.newTab().setText("本月热榜"));
- tabLayout.addTab(tabLayout.newTab().setText("今日热榜"));
- //适配器
- ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),fragmentList,stringList);
- //建立联系
- viewPager.setAdapter(viewPagerAdapter);
- tabLayout.setupWithViewPager(viewPager,true);
- }
- }
tabLayout.setupWithViewPager(viewPager,true);这句代码是关联viewpager和tabLayout。后面的true是是否自动刷新fragment的布尔值,看源码就知道了。
- public void setupWithViewPager(@Nullable final ViewPager viewPager, boolean autoRefresh) {
- setupWithViewPager(viewPager, autoRefresh, false);
- }
- private void setupWithViewPager(@Nullable final ViewPager viewPager, boolean autoRefresh,
- boolean implicitSetup) {
- ......
- //这里需要先设置viewpager的adapter,在关联,不然这里判空不会走正常逻辑
- if (adapter != null) {
- // Now we'll populate ourselves from the pager adapter, adding an observer if
- // autoRefresh is enabled
- setPagerAdapter(adapter, autoRefresh);
- }
- if (mAdapterChangeListener == null) {
- mAdapterChangeListener = new AdapterChangeListener();
- }
- //设置自动刷新
- mAdapterChangeListener.setAutoRefresh(autoRefresh);
- viewPager.addOnAdapterChangeListener(mAdapterChangeListener);
- setScrollPosition(viewPager.getCurrentItem(), 0f, true);
- ......
- mSetupViewPagerImplicitly = implicitSetup;
- }
我们调用的第一个函数,实质是调用的第二个函数。这里需要注意的是需要先调用viewpager的setAdaper之后才能把tabLayout和viewpager关联起来,给个效果图;
0 0
- ViewPager+TabLayout
- Viewpager+Tablayout
- TabLayout+ViewPager
- TabLayout+ViewPager
- TabLayout+viewPager
- ViewPager+TabLayout
- Tablayout+viewpager
- TabLayout +ViewPager
- tablayout+viewpager
- Tablayout + viewpager
- Tablayout+viewpager
- TabLayout+ViewPager
- Tablayout+Viewpager
- Tablayout+Viewpager
- Tablayout+viewpager
- tablayout +viewpager
- Inflater&TabLayout&ViewPager
- ViewPager + Fragment + TabLayout
- 谈了这么久的Project Tango?我们终于把它讲清楚
- 机器学习之数据清理经验
- maven的介绍和安装
- Spark分析之Master、Worker以及Application三者之间如何建立连接
- 解析大小端及其判断
- TabLayout+viewPager
- 冒泡排序简单分析!!
- Docker踩坑
- Dubbo中编码和解码的解析
- Faster RCNN roi_pooling_layer.cpp roi_pooling_layer.cu
- 团体程序设计天梯赛-练习集 L2-002. 链表去重 解题报告
- 用div来布局,css来显示
- Spark分析之Dependency
- 黑心企业武汉美斯坦福强收学生数百万实训费。