TabHost-さまざまな実装
TabHost
:
android.widget.TabHost
( addTab ):
setup();
:
1.Tab TabWidget(@android:id/tabs)
2.Tab FrameLayout(@android:id/tabcontent)
TabHostActivity.java
public class TabHostActivity extends TabActivity {
private TabHost tabHost;
private Intent certificateIntent;
private Intent feeIntent;
private Intent scoreIntent;
private Intent studyIntent;
private Intent moreIntent;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tabHost = getTabHost();
initIntent();
addSpec();
}
/**
* 初始化各个tab标签对应的intent
*/
privatevoid initIntent() {
studyIntent = new Intent(this, StudyActivity.class);
scoreIntent = new Intent(this, ScoreActivity.class);
feeIntent = new Intent(this, FeeActivity.class);
certificateIntent = new Intent(this, CertificateActivity.class);
moreIntent = new Intent(this, MoreActivity.class);
}
/**
* 为tabHost添加各个标签项
*/
privatevoid addSpec() {
tabHost.addTab(this.buildTagSpec("tab_study",
R.string.study_progress,R.drawable.account01, studyIntent));
tabHost.addTab(this.buildTagSpec("tab_score",
R.string.test_score,R.drawable.account02, scoreIntent));
tabHost.addTab(this.buildTagSpec("tab_fee",
R.string.fee_pay,R.drawable.account03, feeIntent));
tabHost.addTab(this.buildTagSpec("tab_certificate", R.string.certificate_grant,R.drawable.accountcertificateIntent));
tabHost.addTab(this.buildTagSpec("tab_more", R.string.more,
R.drawable.account05, moreIntent));
}
/**
* 自定义创建标签项的方法
* @param tagName 标签标识
* @param tagLable 标签文字
* @param icon 标签图标
* @param content 标签对应的内容
* @return
*/
private TabHost.TabSpec buildTagSpec(String tagName, int tagLable,
int icon, Intent content) {
returntabHost
.newTabSpec(tagName)
.setIndicator(getResources().getString(tagLable),
getResources().getDrawable(icon)).setContent(content);
}}
FragmentTabHost 命名空间: android.support.v4.app.FragmentTabHost android.support.v13.app.FragmentTabHost 初始化函数(必须在addTab之前调用): setup(this, getSupportFragmentManager(), R.id.realtabcontent); 包含三个子元素: 1.Tab标签 容器TabWidget(@android:id/tabs) 2.Tab内容 容器FrameLayout [宽高皆为0dp](@android:id/tabcontent) 3.Tab内容 容器FrameLayout [真正的容器](@+id/RealTabContent)
- Tab : 1.( ) TabActivity + TabHost + Activity 1.1:TabActivity ActivityGroup[ 13 ] 1.2: getTabHost() TabHost 1.3: newTabSpec(...).setContent(Intent) Tab 2.( ) ActivityGroup + TabHost + Activity 2.1:ActivityGroup 13 2.2: findViewById TabHost 2.3: setup(new LocalActivityManager(this, true)) 2.4: newTabSpec(...).setContent(Intent) Tab 3.( ) FragmentActivity + FragmentTabHost + Fragment 3.1: findViewById FragmentTabHost 3.2: setup(this, getSupportFragmentManager(), R.id.realtabcontent) 3.3: addTab(newTabSpec().setIndicator(),Fragment.class, null) Tab 4.( ) FragmentActivity + TabHost + ViewPager + Fragment 4.1: findViewById TabHost 4.2: setup() 4.3: TabHost.addTab(tabSpec.setContent(DummyTabFactory)); Tab 4.4: TabHost.onTabChanged ViewPager 4.5: ViewPager.onPageSelected Tab 。 PS: Tab , TabHost 。 : Tab , , TabHost 。 5.(DIY) FragmentActivity + + ViewPager + Fragment 5.1: Tab 5.2: ViewPager 5.3: ViewPager.onPageSelected 。
tabhost
public class TabHoastDemo extends FragmentActivity{ // FragmentTabHost private FragmentTabHost mTabHost; // private LayoutInflater layoutInflater; // Fragment private Class fragmentArray[] = {fragment1.class,fragment2.class,fragment3.class,fragment5.class}; // private int mImageViewArray[] = {R.drawable.vi_2s,R.drawable.vi_3s,R.drawable.vi_4s, R.drawable.vi_5s}; //Tab private String mTextviewArray[] = {" ", " ", " ", " "}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab_hoast_demo); initView(); } /** * */ private void initView(){ // layoutInflater = LayoutInflater.from(this); // TabHost , TabHost mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); // fragment int count = fragmentArray.length; for(int i = 0; i < count; i++){ // Tab 、 TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i)); // Tab Tab mTabHost.addTab(tabSpec, fragmentArray[i], null); // Tab mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.seletors); } } /** * Tab */ private View getTabItemView(int index){ View view = layoutInflater.inflate(R.layout.activity_tab_items, null); ImageView imageView = (ImageView) view.findViewById(R.id.imageview); imageView.setImageResource(mImageViewArray[index]); TextView textView = (TextView) view.findViewById(R.id.textview); textView.setText(mTextviewArray[index]); return view; }