Material Design控件介绍(二)——TabLayout
来源:互联网 发布:java socket 判断断开 编辑:程序博客网 时间:2024/06/06 08:58
Material Design控件介绍(二)——TabLayout
项目地址:https://github.com/JrDong/Android-Sloth
转载请注明出处。如果有问题的话可以在下面评论,我都会一一回复。或者直接上我的主页给我回复。http://ibat.xyz
TabLayout的用法
上一篇,我们讲解了Toolbar,DrawerLayout,NavigationView的用法,现在我们来讲解下TabLayout的用法。
相信大家都用过ViewPagerIndicator,ViewPager的指示器,TabLayout就是google为我们提供的原生的ViewPager指示器。使用需要在gradle文件中引入
compile 'com.android.support:design:23.1.1'
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:tabGravity="fill" app:tabMode="fixed" /> <android.support.v4.view.ViewPager android:id="@+id/vp_main" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" /></LinearLayout>
这里有两个比较重要的属性,app:tabGravity 和 app:tabMode
tabGravity
这个属性有两个值,fill和center,fill指填充满横屏,也就是均分.center指tab居中现实,如下图。
tabMode
这个属性也有两个值,scrollable和fixed。比如说你的app tab比较多的话推荐使用scrollable,设置了这个属性后,Tab页可以左右滑动。但fixed还是占满原屏并平分。
代码实现
现在我们来看下怎么和viewpager结合使用,废话不多说,直接上代码~
private void initViewPager() { ViewPagerAdapter adapter = new ViewPagerAdapter((getActivity()).getSupportFragmentManager()); adapter.addFragment(new OneFragment(), "ONE"); adapter.addFragment(new TwoFragment(), "TWO"); adapter.addFragment(new ThreeFragment(), "THREE"); mViewPager.setAdapter(adapter); //必须在setAdapter之后调用 mTabs.setupWithViewPager(mViewPager); //设置指示器颜色 mTabs.setSelectedTabIndicatorColor(getResources().getColor(R.color.white)); //tab的颜色,属性一,正常颜色;属性二,被选中的颜色. mTabs.setTabTextColors(getResources().getColor(R.color.white_66), getResources().getColor(R.color.white)); } class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } }
注意一点,mTabs.setupWithViewPager(mViewPager);必须在setAdapter之后调用,看下源码:
public void setupWithViewPager(ViewPager viewPager) { PagerAdapter adapter = viewPager.getAdapter(); if(adapter == null) { throw new IllegalArgumentException("ViewPager does not have a PagerAdapter set"); } else { ... } }
其他要点
单独设置tab
TabLayout tabLayout = ...;tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));
1 0
- Material Design控件介绍(二)——TabLayout
- Android进阶——Material Design新控件之TabLayout制作可滚动的Tabs页面(二)
- Android Material Design控件——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android进阶——Material Design新控件之初识TabLayout(一)
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Material Design控件之TabLayout
- Material Design整理(八)——TabLayout
- Material Design —— TabLayout学习笔记
- Material Design 系列(4)—TabLayout&ViewPager&Fragment
- 总结一下 material design控件 Tablayout
- Android Material Design 控件之TabLayout 学习
- Android Material Design控件之TabLayout
- Android Material Design TabLayout入门篇<二>
- Ubuntu安装git与版本库的创建
- 阿里13年研发笔试题 - 寻找有序数组中元素值等于其下标的所有元素
- iOS基础开发-字典转模型(模型思想)
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- Bill Joy - not only the author of VI
- Material Design控件介绍(二)——TabLayout
- 上楼梯
- Centos7下Yum安装PHP5.5,5.6,7.0
- 1015-O专题三
- Jquery ajax post
- OpenJudge 7627 鸡蛋的硬度
- 值得推荐的C/C++框架和库
- Android基础之测量text宽度的三种方式
- JDBC入门教程(二) 通过JDBC进行简单的增删改查