ViewPager2
官方Demo
基本使用
与TabLayout
import com.google.android.material.tabs.TabLayoutMediator
tabLayout = findViewById(R.id.tabs)
//传入tablayout、ViewPager2实例
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
//初始化tab显示内容
tab.text = Card.DECK[position].toString()
}.attach()public void attach() {
if (attached) {
throw new IllegalStateException("TabLayoutMediator is already attached");
}
adapter = viewPager.getAdapter();
//需要先给ViewPager2设置Adapter
if (adapter == null) {
throw new IllegalStateException(
"TabLayoutMediator attached before ViewPager2 has an " + "adapter");
}
attached = true;
// 给ViewPager 设置监听
onPageChangeCallback = new TabLayoutOnPageChangeCallback(tabLayout);
viewPager.registerOnPageChangeCallback(onPageChangeCallback);
// 给Tablayout 设置监听
onTabSelectedListener = new ViewPagerOnTabSelectedListener(viewPager);
tabLayout.addOnTabSelectedListener(onTabSelectedListener);
// Now we'll populate ourselves from the pager adapter, adding an observer if
// autoRefresh is enabled
if (autoRefresh) {
// Register our observer on the new adapter
pagerAdapterObserver = new PagerAdapterObserver();
adapter.registerAdapterDataObserver(pagerAdapterObserver);
}
//开始初始化tab
populateTabsFromPagerAdapter();
// 根据ViewPager2的当前位置更新TabLayout
tabLayout.setScrollPosition(viewPager.getCurrentItem(), 0f, true);
}与Fragment使用
Fragment 状态管理
获取当前Fragment
可变集合
PageTransformer
最后更新于