首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 實現 Tab 滑動切換效果:棄用 TabHost 改用 ViewPager

     編輯:程式設計綜合問答

問題背景

需實現帶滑動動畫的分頁切換,包含標籤欄與內容頁同步滑動。傳統 TabHost 不支援滑動手勢。

推薦方案:ViewPager + TabLayout

現代 Android 開發使用 ViewPager(或 ViewPager2)搭配 TabLayout 實現:

  • 支援左右滑動切換 Fragment。
  • 標籤欄自動聯動,可設定固定/滾動模式。
  • 基於 Fragment 架構,生命週期管理完善。

實作步驟

  1. 添加依賴:implementation "androidx.viewpager2:viewpager2:1.0.0" 及 com.google.android.material:material。
  2. 布局中放置 TabLayout 與 ViewPager2。
  3. 實作 FragmentStateAdapter 提供各分頁 Fragment。
  4. TabLayoutMediator 綁定 TabLayout 與 ViewPager2。

程式碼片段

// Adapter
class MyAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
    override fun getItemCount() = 3
    override fun createFragment(position: Int) = when(position) {
        0 -> HomeFragment()
        1 -> DiscoverFragment()
        else -> ProfileFragment()
    }
}

// Activity/Fragment 中綁定
val pager = findViewById<ViewPager2>(R.id.pager)
pager.adapter = MyAdapter(this)
TabLayoutMediator(tabLayout, pager) { tab, position ->
    tab.text = arrayOf("首頁", "發現", "我的")[position]
}.attach()

遷移建議

若專案仍在用 TabHost,建議逐步遷移至 ViewPager2 + TabLayout,獲得更流暢體驗與 Material Design 風格。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved