TabHost 及 TabActivity 自 API Level 13 (Android 3.2) 起**已棄用**,在 AppCompatActivity 中使用易出現崩潰、樣式異常、Fragment 生命周期混亂。
// 依賴
implementation "androidx.viewpager2:viewpager2:1.0.0"
implementation "com.google.android.material:material:1.5.0"
// 佈局
<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_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
// Adapter
class TabAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
override fun getItemCount() = 3
override fun createFragment(position: Int) = when(position) {
0 -> HomeFragment()
1 -> DiscoverFragment()
2 -> ProfileFragment()
}
}
// 綁定
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
tab.text = arrayOf("首頁","發現","我的")[position]
}.attach()
android.support.v4.app.FragmentTabHost(支持庫版)。onCreate 中初始化:tabHost.setup(this, supportFragmentManager, R.id.realtabcontent)。