FlycoTabLayout+TabLyout+ViewPager解决滑动冲突

注: 此库来着大神  https://github.com/H07000223/FlycoTabLayout


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

SlidingTabLayout:

参照PagerSlidingTabStrip进行大量修改.

      > 新增部分属性

      > 新增支持多种Indicator显示器

      > 新增支持未读消息显示

      > 新增方法for懒癌患者

/** 关联ViewPager,用于不想在ViewPager适配器中设置titles数据的情况 */publicvoidsetViewPager(ViewPagervp,String[] titles)/** 关联ViewPager,用于连适配器都不想自己实例化的情况 */publicvoidsetViewPager(ViewPagervp,String[] titles,FragmentActivityfa,ArrayListfragments)

CommonTabLayout:

不同于SlidingTabLayout对ViewPager依赖,它是一个不依赖ViewPager可以与其他控件自由搭配使用的TabLayout.

        > 支持多种Indicator显示器,以及Indicator动画

        > 支持未读消息显示 

        > 支持Icon以及Icon位置 

         > 新增方法for懒癌患者

/** 关联数据支持同时切换fragments */publicvoidsetTabData(ArrayListtabEntitys,FragmentManagerfm,intcontainerViewId,ArrayListfragments)

SegmentTabLayout

实现:

FlycoTabLayout+TabLyout+ViewPager

第一步:在module.gradle中添加

dependenices{

    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.0.8@aar'

}

第二步:建立TabEntity这里是tab的标题、选中的图标、未选中的图标

public class TabLayoutEntity implements CustomTabEntity {

public String title;

public int selectedIcon;

public int unSelectedIcon;

public TabLayoutEntity(String title, int selectedIcon, int unSelectedIcon) {

this.title = title;

this.selectedIcon = selectedIcon;

this.unSelectedIcon = unSelectedIcon;

}

@Override

public String getTabTitle() {

return title;

}

@Override

public int getTabSelectedIcon() {

return selectedIcon;

}

@Override

public int getTabUnselectedIcon() {

return unSelectedIcon;

}

}

第三部:创建MainActivity

public class MainActivity extends BaseActivity {

@BindView(R.id.framelayout)

FrameLayout framelayout;

@BindView(R.id.commontablayout)

CommonTabLayoutm Tablayout;

//显示的title

@BindArray(R.array.bottom_tabs)

String mTitles[];

//未点击的icon

private int[] mIconUnselectIds= {

R.drawable.placeholder, R.drawable.placeholder,

R.drawable.placeholder, R.drawable.placeholder};

//点击后的icon

private int[] mIconSelectIds= {

R.drawable.leak_canary_icon, R.drawable.leak_canary_icon,

R.drawable.leak_canary_icon, R.drawable.leak_canary_icon};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ButterKnife.bind(this);

if(savedInstanceState ==null){

init();

 }

}

@Override

protected voidinit() {

super.init();

//tab的标题、选中图标、未选中图标

ArrayList mTabEntities =newArrayList<>();

for(inti =0;i<mTitles.leng;i++){

mTabEntities.add(new TabLayoutEntity( mTitles[i], mIconSelectIds[i],                 mIconUnselectIds[i]));

}

//传入显示fragment

ArrayList fragments =newArrayList<>();

fragments.add(new MemeFragment());

fragments.add(new JokeFragment());

fragments.add(new JokeFragment());

fragments.add(new JokeFragment());

//给tab设置数据和关联的fragment

mTablayout.setTabData(mTabEntities,this,R.id.framelayout,fragments);

}

}

第四部:设置activity的layout

<FrameLayout

android:id="@+id/framelayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>


<com.flyco.tablayout.CommonTabLayout

android:id="@+id/commontablayout"

android:layout_alignParentBottom="true"

android:layout_width="match_parent"

android:layout_height="50dp"

tl:tl_iconGravity="LEFT"

tl:tl_iconHeight="18dp"

tl:tl_iconMargin="5dp"

tl:tl_iconWidth="18dp"

tl:tl_indicator_bounce_enable="true"

tl:tl_indicator_color="#2C97DE"

tl:tl_indicator_gravity="BOTTOM"

tl:tl_indicator_height="0dp"

tl:tl_textSelectColor="#2C97DE"

tl:tl_textUnselectColor="#66000000"

tl:tl_textsize="15sp"

tl:tl_underline_color="#DDDDDD"

tl:tl_underline_gravity="TOP"

tl:tl_underline_height="1dp"/>

第五步:创建需要填充的Fragment

进过这五部,就能够掌握CommonTabLayout实现tab的效果,并且能够避免在fragment中添加viewpager出现滑动冲突。

FlycoTabLyout的属性:

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容