1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > ViewPage2+TabLayout小记

ViewPage2+TabLayout小记

时间:2024-05-08 12:28:55

相关推荐

ViewPage2+TabLayout小记

近几年Google已经不再维护ViewPage,转向了ViewPage2,码农也不得不与时俱进更新一下自己的知识,就普通使用来说两者的区别不大,一般都是搭配Tablayout使用,使用也都不算复杂,下面直接贴代码:

<com.google.android.material.tabs.TabLayoutandroid:id="@+id/tabLayout"android:layout_width="0dp"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"></com.google.android.material.tabs.TabLayout><androidx.viewpager2.widget.ViewPager2android:id="@+id/viewPager2"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintBottom_toTopOf="@+id/tabLayout"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />

public class MyFragmentStateAdapter extends FragmentStateAdapter {private ArrayList<Fragment> fragments;public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity, ArrayList<Fragment> fragments) {super(fragmentActivity);this.fragments = fragments;//把fragments传入MyFragmentStateAdapter}@NonNull@Overridepublic Fragment createFragment(int position) {return fragments.get(position);//这里记得要重写,默认是返回Null的}@Overridepublic int getItemCount() {return fragments.size();//这里也改}}

public class MainActivity extends AppCompatActivity {public static final String TAG = "MainActivity";TabLayout tabLayout;ViewPager2 viewPager2;ArrayList<String> titles;ArrayList<Fragment> fragments;MyFragmentStateAdapter myFragmentStateAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tabLayout = findViewById(R.id.tabLayout);viewPager2 = findViewById(R.id.viewPager2);titles = new ArrayList<>();fragments=new ArrayList<>();titles.add("12");titles.add("23");titles.add("34");titles.add("45");fragments.add(new Fragment());fragments.add(new Fragment());fragments.add(new Fragment());fragments.add(new Fragment());myFragmentStateAdapter=new MyFragmentStateAdapter(this,fragments);viewPager2.setAdapter(myFragmentStateAdapter);viewPager2.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> tab.setText(titles.get(position))).attach();;}}

上面的核心就是创建TabLayoutMediator以将tabLayout 与viewPager2关联:

new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> tab.setText(titles.get(position))).attach();;

除此之外都是常规操作,最终效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。