TabViewPager很好用

TabViewPager

項(xiàng)目地址:GitHub

項(xiàng)目中經(jīng)常能用到這樣的使用場景:

在頂部顯示一個Header,接著是一個TabLayout,而每個Tab都對應(yīng)一個RecyclerView,在向上滑動的時候,Header和TabLayout跟隨RecyclerView滑動,但是TabLayout不能移出頂部。

咕~~(╯﹏╰)b,聽起來很復(fù)雜,不知所云

對于這種效果,有兩種解決方案:

  • Android提供的Design包實(shí)現(xiàn)
  • 自己控制Header移動

方案一:Android提供的Design包

這種方案的效果如下:

對于這種效果,我們要怎么實(shí)現(xiàn)呢?
布局中大致是這樣的結(jié)構(gòu)

<CoordinatorLayout >
  <AppBarLayout>
    <CollapsingToolbarLayout>
      <Toolbar>
      </Toolbar>
    </CollapsingToolbarLayout>
  </AppBarLayout>
  <TabLayout>
  </TabLayout>
  <ViewPager>
  </ViewPager>
</CoordinatorLayout>

可以看到,布局很復(fù)雜,而且必須是Material Design風(fēng)格,就國內(nèi)這種環(huán)境,很多App應(yīng)該Toolbar都是自己寫的吧,更別說Material Design了,就個人而言,我不太喜歡這種顯示方式,不夠干脆利落。

方案二:自己控制Header移動

第二種方案是自己手動控制Header的移動,這樣雖然布局邏輯簡單了,但是必須自己手動去調(diào)整Header的位置,增加了代碼的復(fù)雜性,于是乎,我就簡單的封裝了一個小小小小的庫,讓你用最簡單的方式實(shí)現(xiàn)這種效果。

廢話不多說,有圖有真相:

怎么樣,看起來是不是很簡潔,那接下來老夫就講講怎么使用

首先,你需要在build.gradle中添加一條依賴:

compile 'com.goyourfly:tabviewpager:0.5'

接下來呢,在布局中添加TabViewPager

<com.goyourfly.tabviewpager.TabViewPager
        android:id="@+id/tabViewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

最后呢,在代碼中進(jìn)行一下簡單的配置

TabViewPager tabViewPager = findViewById(R.id.tabViewPager);
tabViewPager.setup(new String[]{"A", "B", "C"},//Tab數(shù)組
        View.inflate(this, R.layout.layout_header, null),// HeaderView
        true,// Header是否Parallax
        new Function2<RecyclerView, Integer, Unit>() {
            @Override
            public Unit invoke(RecyclerView recyclerView, Integer integer) {
                // 為每個Tab下的RecyclerView綁定LayoutManager
                recyclerView.setLayoutManager(new LinearLayoutManager(MainActivityJava.this));
                // 為每個Tab下的RecyclerView綁定Adapter
                recyclerView.setAdapter(new MyAdapter());
                return null;
            }
});

然后,然后就沒有然后了??,怎么樣,是不是感覺很簡單,如果覺得還闊以的話,麻煩給個Star,萬一以后用的到呢,?(? ? ??)嘿嘿,謝謝啦,好了,不說了,我要打游戲去了~~~

Star地址:GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,954評論 25 709
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 47,147評論 22 665
  • 上一小節(jié)給大家分享了各種橢圓的實(shí)現(xiàn)方法,此時我們來說一下平行四邊形的實(shí)現(xiàn)方法。 平行四邊形 基本變形屬性trans...
    ??﹪颠薉Q閱讀 4,257評論 2 2
  • 接著上幾篇文章再來看下windows下安裝mysql。 我這里是windows7 64位, 安裝過程中還是遇到一些...
    Nic_ofh閱讀 781評論 0 0

友情鏈接更多精彩內(nèi)容