使用TabLayout实现底部Tab布局

作者: 阳春面 | 来源:发表于2015-08-09 20:57 被阅读4613次

    Android design支持库中的TabLayout一般都用来实现头部Tab的效果,
    比如:


    TabLayoutTabLayout

    但是像微信这种底部Tab布局在我们实际项目中还是非常常见的设计,
    现在我们也可以用TabLayout非常方便的实现。


    底部Tab底部Tab

    布局

    下面我们开始实现底部Tab,layout布局比较简单,我们只用把TabLayout放置在底部即可

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/appbar"
            android:orientation="vertical">
    
    
            <android.support.v4.view.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1.0"
                android:scrollbars="none" />
    
            <android.support.design.widget.TabLayout
                android:id="@+id/tabLayout"
                style="@style/MyCustomTabLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
    
    </LinearLayout>
    

    我定义了一个自定义的style,把tabIndicatorHeight设为0dp

    <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
            <item name="tabMaxWidth">@dimen/tab_max_width</item>
            <item name="tabIndicatorColor">?attr/colorAccent</item>
            <item name="tabIndicatorHeight">0dp</item>
            <item name="tabPaddingStart">12dp</item>
            <item name="tabPaddingEnd">12dp</item>
            <item name="tabBackground">@color/tab_bgcolor</item>
            <item name="tabSelectedTextColor">?android:textColorPrimary</item>
    </style>
    

    代码实现

    我们首先设置好ViewPager,然后设置TabLayout与ViewPager的对应关系,
    最后最关键的是使用TabLayout的setCustomView设置自定义的TAB View。

            viewPager = (ViewPager)findViewById(R.id.viewPager);
            tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    
            SampleFragmentPagerAdapter pagerAdapter =
                    new SampleFragmentPagerAdapter(getSupportFragmentManager(), this);
            viewPager.setAdapter(pagerAdapter);
    
            tabLayout.setupWithViewPager(viewPager);
    
            for (int i = 0; i < tabLayout.getTabCount(); i++) {
                TabLayout.Tab tab = tabLayout.getTabAt(i);
                if (tab != null) {
                    tab.setCustomView(pagerAdapter.getTabView(i));
                }
            }
    
            viewPager.setCurrentItem(1);
    
    public View getTabView(int position) {
                View v = LayoutInflater.from(context).inflate(R.layout.custom_tab, null);
                TextView tv = (TextView) v.findViewById(R.id.textView);
                tv.setText(tabTitles[position]);
                ImageView img = (ImageView) v.findViewById(R.id.imageView);
                //img.setImageResource(imageResId[position]);
                return v;
            }
    

    代码例子:BottomTabActivity.java

    本文作者: 阳春面
    原文地址:http://www.aswifter.com/2015/08/09/implements-bottom-tab-with-tablayout/

    欢迎关注我的微信公众号,分享Android 开发,IOS开发,Swift开发和互联网内容
    微信号:APP开发者

    相关文章

      网友评论

      • a43242a45bc5:你好,想请教下,如果用tabLayout设置底部导航栏,只设置图片和文字,图片在上,文字在下,请问如何设置图片和文字之间的距离呢?
      • 84e3d435d642:TAB的图标怎么切换而改变呢?
      • Devnan:也有很多实现tab的方法,fragment和viewpager,tabhost等,tablayout相比优点在哪?官方有给吗
        阳春面:@启南Allen 简单,tablayout是需要配合viewpager使用的
      • Fi7z:图片怎么随着切换界面而改变呢?
      • YungFan:你好,为什么我用TabLayout 字体颜色和选中字体颜色 无论怎么设置都是无效的呢?
        a1ff99cfe214:你好 我也遇到这个问题,可以给出代码示例么
        阳春面:@ab557ce505cd 你要自定义写一个color XML文件

      本文标题:使用TabLayout实现底部Tab布局

      本文链接:https://www.haomeiwen.com/subject/hehiqttx.html