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

Android 仿 QQ 底部標籤切換:FragmentTabHost + Fragment 實作

     編輯:程式設計綜合問答

QQ 主介面底部三個標籤(訊息、聯絡人、動態)對應三個頁面切換,標準實作為 FragmentTabHost 搭配 Fragment,而非早期的 TabHost + Activity 或 ViewPager + RadioGroup 自製方案。

核心代碼結構

// 主 Activity 繼承 FragmentActivity
public class MainActivity extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTabHost = findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        // 新增三個標籤
        mTabHost.addTab(
            mTabHost.newTabSpec("tab1").setIndicator("訊息", getResources().getDrawable(R.drawable.ic_msg)),
            MsgFragment.class, null);
        mTabHost.addTab(
            mTabHost.newTabSpec("tab2").setIndicator("聯絡人", getResources().getDrawable(R.drawable.ic_contact)),
            ContactFragment.class, null);
        mTabHost.addTab(
            mTabHost.newTabSpec("tab3").setIndicator("動態", getResources().getDrawable(R.drawable.ic_dynamic)),
            DynamicFragment.class, null);
    }
}

關鍵點

  • FragmentTabHost 內建處理標籤狀態保存/恢復,避免重疊、重建問題。
  • 每個 Fragment 獨立生命週期,支援巢狀 Fragment、資料保持。
  • 指示器可自訂佈局(圖標+文字、紅點角標),透過 setIndicator(View) 實現。

參考資源

完整教學請見:Android FragmentTabHost 實現 QQ 底部導航欄

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