Android顶部导航栏TabLayout
发布日期:2021-06-07 09:28:21 浏览次数:9 分类:技术文章

本文共 3500 字,大约阅读时间需要 11 分钟。

介绍:

源码路径:

android.support.design.widget.TabLayout.java

TabLayout provides a horizontal layout to display tabs.

简单翻译下:TabLayout提供一个水平的布局来显示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),重写PagerAdaptergetPageTitle方法后,就可以添加导航的item。

Activity代码:

@BindView(R.id.tab_layout)    TabLayout mTabLayout;    @BindView(R.id.view_pager)    ViewPager mViewPager;    private List
mTitleList = 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 List
mTitles; 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:try-catch-finally 与返回值的修改
下一篇:Android屏幕资源匹配顺序

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 00时35分46秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章