android tab 实现

一、TabActivity 实现

布局id与结构

TabHost(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
       LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
             TabWidget(id不可变必须使用系统默认的id)
             FrameLayout(id不可变必须使用系统默认的id)

TabHost(id不可变(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
       LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
             TabWidget(id不可变必须使用系统默认的id)
             FrameLayout(id不可变必须使用系统默认的id)

获得TabHost和设置tab和content(可以view id,TabContentFactory(创建一个view),Intent(Activity跳转))

1.MyActivity继承的是Activity

mTabHost = (TabHost) findViewById(android.R.id.tabhost);

mTabHost.setup();

//如果用intent    

//LocalActivityManager(过时了)    

//LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);

//mLocalActivityManager.dispatchCreate(savedInstanceState);

//mTabHost.setup(mLocalActivityManager); 

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

2.MyActivity继承的是ActivityGroup(过时了)

mTabHost = (TabHost) findViewById(android.R.id.tabhost);

mTabHost.setup();

//如果用intent        

// mTabHost.setup(this.getLocalActivityManager())

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

3.MyActivity继承的是TabActivity(过时了)

tabhost = getTabHost();

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

二、ActivityGroup 实现

radiobutton作为标签,某一个布局作为内容。关键代码

tabContentView.removeAllViews();
tabContentView.addView(getLocalActivityManager().startActivity("two",new Intent(MainView.this, TwoView.class))

TabActivity可以用某一视图作为内容,也可用一个Activity作为内容,ActivityGroup用一个Activity作为内容。TabActivity,ActivityGroup用Activity作为内容是,内容activity在创建之后切换页的时候只执行onPause 和 onResume。附件是两种实现。

三、Fragment实现tab

用radiobutton做标签,一个布局做内容容器关键代码

      FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction();
      fragmentTransaction.add(R.id.container, placeholderFragement);

      fragmentTransaction.replace(R.id.content, fragment);
      fragmentTransaction.commit();

切换tab fragment执行ondestroyview onstop onpause oncreateview onstart onresume

附件有代码

猜你喜欢

转载自wenzongliang.iteye.com/blog/2178499
今日推荐