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閱讀 230,106評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,441評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,475評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,834評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,009評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,559評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,306評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,516評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,728評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,249評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,484評論 2 379

推薦閱讀更多精彩內容