本文共 3500 字,大约阅读时间需要 11 分钟。
介绍:
源码路径:
android.support.design.widget.TabLayout.java
TabLayout provides a horizontal layout to display tabs.
一. 引入依赖库:
compile 'com.android.support:design:26.0.0-alpha1'
二. 使用TabLayout
第一种方法:
使用TabLayout.newTab()
来创建Tab
mTabLayout1.addTab(mTabLayout1.newTab().setText("item1")); mTabLayout1.addTab(mTabLayout1.newTab().setText("item2")); mTabLayout1.addTab(mTabLayout1.newTab().setText("item3")); mTabLayout1.addTab(mTabLayout1.newTab().setText("item4"));
第二种方法:
使用TabItem
第三种方法:
绑定ViewPager,调用方法:setupWithViewPager(ViewPager)
,重写PagerAdapter
的getPageTitle
方法后,就可以添加导航的item。
Activity代码:
@BindView(R.id.tab_layout) TabLayout mTabLayout; @BindView(R.id.view_pager) ViewPager mViewPager; private ListmTitleList = Arrays.asList("1","2","3","4","5","6","7","8"); private List mFragmentList = new ArrayList<>(); private TabFragmentPagerAdapter mTabFragmentPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab); ButterKnife.bind(this); initFragmentViewPager(); } private void initFragmentViewPager(){ mFragmentList.add(new Fragment1()); mFragmentList.add(new Fragment2()); mFragmentList.add(new Fragment3()); mFragmentList.add(new Fragment4()); mFragmentList.add(new Fragment1()); mFragmentList.add(new Fragment2()); mFragmentList.add(new Fragment3()); mFragmentList.add(new Fragment4()); mTabFragmentPagerAdapter = new TabFragmentPagerAdapter( getSupportFragmentManager(), mTitleList, mFragmentList); mViewPager.setAdapter(mTabFragmentPagerAdapter); mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); mTabLayout.setupWithViewPager(mViewPager); }
Adapter:
private ListmTitles; private List mFragments; public TabFragmentPagerAdapter(FragmentManager fm, List titles, List fragments) { super(fm); mTitles = titles; mFragments = fragments; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return mTitles.get(position); }
三 设置TabLayout的自定义属性
设置指示器indicator的颜色:
app:tabIndicatorColor="@color/red"
设置指示器indicator的高度:
app:tabIndicatorHeight="@dimen/tab_indicator_height"
设置tab的字体颜色:
app:tabTextColor="@color/black"
设置tab选中的字体颜色:
app:tabSelectedTextColor="@color/red"
设置tab的字体大小:
app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
其中,MyTabLayoutTextAppearance为自定义的style:
添加icon:
android:icon="@mipmap/ic_launcher"
或者
mTabLayout1.addTab(mTabLayout1.newTab().setText("item1").setIcon(R.mipmap.ic_launcher));
设置TabLayout为可以滑动:
app:tabMode="scrollable"
或者
mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
默认是fixed:固定的,标签很多时候会被挤压,不能滑动。
tab内部的padding:
app:tabPadding="2dp" app:tabPaddingTop="2dp" app:tabPaddingBottom="2dp" app:tabPaddingStart="2dp" app:tabPaddingEnd="2dp"
内容的显示模式:
app:tabGravity="center"
center表示居中,如果是fill,则是充满。
tab的宽度:
app:tabMinWidth="120dp"app:tabMaxWidth="120dp"
TabLayout开始位置的偏移量:
app:tabContentStart="20dp"
demo地址:
参考:
转载地址:https://blog.csdn.net/Next_Second/article/details/72842616 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!