FlycoTabLayout
一個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
瞭解更多可以添加公衆號