Android ViewPager2 & TabLayout

ViewPager2是在2019年Google I/O大會(huì)推出的用來(lái)替代ViewPager的,它包含了一些新的特性以及增強(qiáng)了UI和代碼的體驗(yàn)。


API的變動(dòng):


。目前還只是推出了第一個(gè)預(yù)覽版,我們可以直接引入來(lái)使用了:

? implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha04'

我們先來(lái)看看有哪些功能和使用上的變化:

新功能:

支持RTL布局

支持豎向滾動(dòng)

完整支持notifyDataSetChanged

FragmentStateAdapter替換了原來(lái)的?FragmentStatePagerAdapter

RecyclerView.Adapter替換了原來(lái)的?PagerAdapter

registerOnPageChangeCallback替換了原來(lái)的?addPageChangeListener

讓我們來(lái)看看如何使用吧

導(dǎo)入依賴(lài)的庫(kù)這里會(huì)多出一個(gè)庫(kù) 用來(lái)TabLayout和ViewPager的綁定

implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha04'

implementation 'com.google.android.material:material:1.1.0-alpha08'

先看布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

? ? xmlns:app="http://schemas.android.com/apk/res-auto"

? ? xmlns:tools="http://schemas.android.com/tools"

? ? android:orientation="vertical"

? ? android:layout_width="match_parent"

? ? android:layout_height="match_parent"

? ? tools:context=".MainActivity">

? ? <com.google.android.material.tabs.TabLayout

? ? ? ? android:id="@+id/tabLayout"

? ? ? ? android:layout_width="match_parent"

? ? ? ? android:layout_height="wrap_content"/>

? ? <androidx.viewpager2.widget.ViewPager2

? ? ? ? android:id="@+id/viewpager"

? ? ? ? android:layout_weight="1"

? ? ? ? android:layout_width="match_parent"

? ? ? ? android:layout_height="240dp"/>

</LinearLayout>


Activity中的

public class MainActivity extends AppCompatActivity {

private TabLayout tabLayout;

private ViewPager2 viewpager;

private List<String> evenList=new ArrayList<>();

? ? @Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_main);

? ? ? ? tabLayout=findViewById(R.id.tabLayout);

? ? ? ? viewpager=findViewById(R.id.viewpager);

? ? ? ? evenList.add("0");

? ? ? ? evenList.add("1");

? ? ? ? evenList.add("2");

//? ? ? ? 正常的用法

? ? ? ? viewpager.setAdapter(new MainAdapter(MainActivity.this,evenList));

//? ? ? ? TabLayout和ViewPager的綁定

? ? ? ? TabLayoutMediator? tabLayoutMediator=? new TabLayoutMediator(tabLayout, viewpager, new TabLayoutMediator.OnConfigureTabCallback() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {

? ? ? ? ? ? ? ? tab.setText("Tab"+position);

? ? ? ? ? ? }

? ? ? ? });

? ? ? ? tabLayoutMediator.attach();

? ? }

}

最后我附上代碼? ? 具體的看代碼吧??

https://github.com/TangfeiJi/MyViewPager2

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

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

  • 14。打開(kāi)FiltersListFragment.java并進(jìn)行如下所示的修改。這里 >FilterPack.ge...
    ListenToCode閱讀 1,094評(píng)論 0 0
  • 通常在ViewPager的上方,我們都會(huì)放一個(gè)標(biāo)簽指示器與ViewPager進(jìn)行聯(lián)動(dòng)。以前,我們大多使用的是Git...
    DoAndKeep閱讀 79,784評(píng)論 36 110
  • Android使用底部導(dǎo)航 Android底部導(dǎo)航停留在屏幕底部,提供應(yīng)用中頂級(jí)視圖之間的導(dǎo)航。這是在具有向后兼容...
    ListenToCode閱讀 2,539評(píng)論 1 15
  • 最近幾天一直沒(méi)日更,想著自己還有差不多十個(gè)復(fù)活卡,應(yīng)該能復(fù)活吧,沒(méi)想到兩天沒(méi)更新,日更挑戰(zhàn)失敗了,是不是新的一年復(fù)...
    西瓜吹雪閱讀 924評(píng)論 0 14
  • 題記:讓心理學(xué)落實(shí)到生活,影響,改變自己的內(nèi)心,親子關(guān)系和夫妻關(guān)系。 這片文章的時(shí)候,我已經(jīng)參加心理學(xué)的成長(zhǎng)小組有...
    玫瑰花園2017閱讀 566評(píng)論 0 1

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