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

name format description
tl_indicator_color color 設置顯示器顏色
tl_indicator_height dimension 設置顯示器高度
tl_indicator_width dimension 設置顯示器固定寬度
tl_indicator_margin_left dimension 設置顯示器margin,當indicator_width大於0,無效
tl_indicator_margin_top dimension 設置顯示器margin,當indicator_width大於0,無效
tl_indicator_margin_right dimension 設置顯示器margin,當indicator_width大於0,無效
tl_indicator_margin_bottom dimension 設置顯示器margin,當indicator_width大於0,無效
tl_indicator_corner_radius dimension 設置顯示器圓角弧度
tl_indicator_gravity enum 設置顯示器上方(TOP)還是下方(BOTTOM),只對常規顯示器有用
tl_indicator_style enum 設置顯示器爲常規(NORMAL)或三角形(TRIANGLE)或背景色塊(BLOCK)
tl_underline_color color 設置下劃線顏色
tl_underline_height dimension 設置下劃線高度
tl_underline_gravity enum 設置下劃線上方(TOP)還是下方(BOTTOM)
tl_divider_color color 設置分割線顏色
tl_divider_width dimension 設置分割線寬度
tl_divider_padding dimension 設置分割線的paddingTop和paddingBottom
tl_tab_padding dimension 設置tab的paddingLeft和paddingRight
tl_tab_space_equal boolean 設置tab大小等分
tl_tab_width dimension 設置tab固定大小
tl_textsize dimension 設置字體大小
tl_textSelectColor color 設置字體選中顏色
tl_textUnselectColor color 設置字體未選中顏色
tl_textBold boolean 設置字體加粗
tl_iconWidth dimension 設置icon寬度(僅支持CommonTabLayout)
tl_iconHeight dimension 設置icon高度(僅支持CommonTabLayout)
tl_iconVisible boolean 設置icon是否可見(僅支持CommonTabLayout)
tl_iconGravity enum 設置icon顯示位置,對應Gravity中常量值,左上右下(僅支持CommonTabLayout)
tl_iconMargin dimension 設置icon與文字間距(僅支持CommonTabLayout)
tl_indicator_anim_enable boolean 設置顯示器支持動畫(only for CommonTabLayout)
tl_indicator_anim_duration integer 設置顯示器動畫時間(only for CommonTabLayout)
tl_indicator_bounce_enable boolean 設置顯示器支持動畫回彈效果(only for CommonTabLayout)
tl_indicator_width_equal_title boolean 設置顯示器與標題一樣長(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

瞭解更多可以添加公衆號

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章