FlycoTabLayout 的使用

FlycoTabLayout

Android Arsenal

一个Android TabLayout库,目前有3个TabLayout

  • SlidingTabLayout:参照PagerSlidingTabStrip进行大量修改.

    • 新增部分属性
    • 新增支持多种Indicator显示器
    • 新增支持未读消息显示
    • 新增方法for懒癌患者
        /** 关联ViewPager,用于不想在ViewPager适配器中设置titles数据的情况 */
        public void setViewPager(ViewPager vp, String[] titles)
    
        /** 关联ViewPager,用于连适配器都不想自己实例化的情况 */
        public void setViewPager(ViewPager vp, String[] titles, FragmentActivity fa, ArrayList<Fragment> fragments) 
  • CommonTabLayout:不同于SlidingTabLayout对ViewPager依赖,它是一个不依赖ViewPager可以与其他控件自由搭配使用的TabLayout.

    • 支持多种Indicator显示器,以及Indicator动画
    • 支持未读消息显示
    • 支持Icon以及Icon位置
    • 新增方法for懒癌患者
        /** 关联数据支持同时切换fragments */
        public void setTabData(ArrayList<CustomTabEntity> tabEntitys, FragmentManager fm, int containerViewId, ArrayList<Fragment> fragments)
  • SegmentTabLayout

Demo

这里写图片描述
这里写图片描述
这里写图片描述

Change Log

v2.0.0(2016-03-01)
- 删除了对FlycoRoundView库的依赖
- 新增方法getIconView和getTitleView(为了某些情况需要动态更新icon之类的)

v2.0.2(2016-04-23)
- 删除了对NineOldAnimation库依赖(仅支持3.0+)

Gradle

dependencies{
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.flyco.roundview:FlycoRoundView_Lib:1.1.2@aar'
    compile 'com.flyco.tablayout:FlycoTabLayout_Lib:1.5.0@aar'
}

After v2.0.0(support 2.2+)
dependencies{
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.0@aar'
}

After v2.0.2(support 3.0+)
dependencies{
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
}

Attributes

nameformatdescription
tl_indicator_colorcolor设置显示器颜色
tl_indicator_heightdimension设置显示器高度
tl_indicator_widthdimension设置显示器固定宽度
tl_indicator_margin_leftdimension设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_topdimension设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_rightdimension设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_bottomdimension设置显示器margin,当indicator_width大于0,无效
tl_indicator_corner_radiusdimension设置显示器圆角弧度
tl_indicator_gravityenum设置显示器上方(TOP)还是下方(BOTTOM),只对常规显示器有用
tl_indicator_styleenum设置显示器为常规(NORMAL)或三角形(TRIANGLE)或背景色块(BLOCK)
tl_underline_colorcolor设置下划线颜色
tl_underline_heightdimension设置下划线高度
tl_underline_gravityenum设置下划线上方(TOP)还是下方(BOTTOM)
tl_divider_colorcolor设置分割线颜色
tl_divider_widthdimension设置分割线宽度
tl_divider_paddingdimension设置分割线的paddingTop和paddingBottom
tl_tab_paddingdimension设置tab的paddingLeft和paddingRight
tl_tab_space_equalboolean设置tab大小等分
tl_tab_widthdimension设置tab固定大小
tl_textsizedimension设置字体大小
tl_textSelectColorcolor设置字体选中颜色
tl_textUnselectColorcolor设置字体未选中颜色
tl_textBoldboolean设置字体加粗
tl_iconWidthdimension设置icon宽度(仅支持CommonTabLayout)
tl_iconHeightdimension设置icon高度(仅支持CommonTabLayout)
tl_iconVisibleboolean设置icon是否可见(仅支持CommonTabLayout)
tl_iconGravityenum设置icon显示位置,对应Gravity中常量值,左上右下(仅支持CommonTabLayout)
tl_iconMargindimension设置icon与文字间距(仅支持CommonTabLayout)
tl_indicator_anim_enableboolean设置显示器支持动画(only for CommonTabLayout)
tl_indicator_anim_durationinteger设置显示器动画时间(only for CommonTabLayout)
tl_indicator_bounce_enableboolean设置显示器支持动画回弹效果(only for CommonTabLayout)
tl_indicator_width_equal_titleboolean设置显示器与标题一样长(only for SlidingTabLayout)




CommonTabLayout不再依赖于ViewPager完成初始化,实现底部导航或者头部导航效果,让我们告别RadioButton+ViewPager的时代,CustomTabEntity的命名有点问题哈,命名是一个接口非要定义Entity结尾,TabEntity实现该接口,修改构造方法,初始化内部参数,下面是一个配合CommonTabLayout+ViewPager的导航实例

mFragmentList = addFragmentList(R.id.home_frameLayout, fragmentClasses);

    for (int i = 0; i < titles.length; i++) {
        mTabEntities.add(new TabEntity(titles[i], checkeds[i], normals[i]));
    }

    commonTabLayout.setTabData(mTabEntities);
    commonTabLayout.setOnTabSelectListener(new OnTabSelectListener() {
        @Override
        public void onTabSelect(int position) {

            if (position == 1) {
                topBarBuilder.configSearchStyle(titles[position], R.drawable.ic_action_search);
            } else {
                topBarBuilder.configTitle(titles[position]);
            }

            showFragment(R.id.home_frameLayout, position, mFragmentList);
            onLoggerD("initial callback ,show fragment with position " + position + ";FragmentName:" + mFragmentList.get(position).toString());
        }

        @Override
        public void onTabReselect(int position) {
            //TODO 重选
        }
    });

Dependence

Thanks

了解更多可以添加公众号

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值