綜述
早期的TabHost被廢棄,因此使用新的FragmentTabHost代替TabHost
使用TabHost時,在TabActivity中將Activity作爲tab加入TabHost即可
使用FragmentTabHost時使用的是FragmentActivity中容納多個Fragment
FragmentTabHost使用時需要加入v4包,在Eclipse中需要人工導入v4包,AndroidStudio本身自己有v4包,再導入會導致v4包衝突
FragmentTabHost的佈局編寫:
- FrameLayout:真正容納底部標籤的佈局。
- FragmentTabHost:id使用系統id,tabHost
- TabWeight:固定的不知道有什麼意思。id使用系統id,tabs
- FrameLayout:要求必須按照這種格式寫,否則會報錯。使用系統id,tabcontent
我們之所以需要在上方加一個FrameLayout的目的是讓切換標籤放在下方,如果直接使用的下面的結構的話,標籤項會出現在界面上方。
FragmentTabhost使用的主界面程序編寫,繼承FragmentActivity
1、找到FragmentTabHost:通過findViewById(android.R.id.tabhost)
2、初始化FragmentTabHost:通過setup函數,參數傳入context,getSupportFragmentManager(),以及自己真正的標籤容器。
3、添加Tab三步:
①創建Tab:tabHost.newTabSpec(String tag);該tag可以用來找到Fragment
②設置標籤:tabSpec.setIndicator(View v);這裏一般使用組合控件,一般情況下標籤包括文字以及圖片兩個部分。
③添加Tab:tabHost.addTab(tabSpec, MyFragment.class, Bundle bundle);第二個參數是對應需要添加的Fragment,bundle是chuanruFragment的參數,不需要時填入null;該參數可以在Fragment中的onCreateView中通過Bundle bundle = this.getArguments()獲取。