今天来学习一下选项卡(TabHost)的使用,

        选项卡的使用很常见,比如说:我们在手机上面 已接来电,未接来电的分组,首先来看下实现出来的效果截图:

        

           我们要去实现TabHost,主要有两种方法:

        1、各选项内容在布局文件中定义。

        2、主Activity类继承TabActivity;
        3、用getTabHost()方法获取TabHost
      1、直接在布局文件中定义TabHost
 
   注意:TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是   @android:id/tabcontent。 

    接下来使用第一种的实现方法来去实现TabHost

    主Activity类:  

package com.jiangqq.tabhost;  import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import android.widget.TabHost.TabSpec;  public class TabHostActivity_Second extends TabActivity { 	@Override 	protected void onCreate(Bundle savedInstanceState) { 		// TODO Auto-generated method stub 		super.onCreate(savedInstanceState); 		// setContentView(R.layout.tabhost_second); 		// 得到TabHost 		TabHost tabHost = this.getTabHost();  		// 把自己的布局文件添加到TabHost 的FrameLayout中 【注意】很重要的一句代码 		LayoutInflater.from(this).inflate(R.layout.tabhost_second, 				tabHost.getTabContentView(), true); 		// 设置选项卡 		// 参数:是选项卡的标签 		TabSpec parentSpec = tabHost.newTabSpec("parent"); 		parentSpec.setIndicator("基类", 				this.getResources().getDrawable(R.drawable.announcements256)); 		parentSpec.setContent(R.id.tab_1);  		TabSpec subSpec = tabHost.newTabSpec("sub"); 		subSpec.setIndicator("子类", 				this.getResources().getDrawable(R.drawable.content256)); 		subSpec.setContent(R.id.tab_2);  		tabHost.addTab(parentSpec); 		tabHost.addTab(subSpec);  	} }
      TabHost的布局文件:

      

package com.jiangqq.tabhost;  import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import android.widget.TabHost.TabSpec;  public class TabHostActivity_Second extends TabActivity { 	@Override 	protected void onCreate(Bundle savedInstanceState) { 		// TODO Auto-generated method stub 		super.onCreate(savedInstanceState); 		// setContentView(R.layout.tabhost_second); 		// 得到TabHost 		TabHost tabHost = this.getTabHost();  		// 把自己的布局文件添加到TabHost 的FrameLayout中 【注意】很重要的一句代码 		LayoutInflater.from(this).inflate(R.layout.tabhost_second, 				tabHost.getTabContentView(), true); 		// 设置选项卡 		// 参数:是选项卡的标签 		TabSpec parentSpec = tabHost.newTabSpec("parent"); 		parentSpec.setIndicator("基类", 				this.getResources().getDrawable(R.drawable.announcements256)); 		parentSpec.setContent(R.id.tab_1);  		TabSpec subSpec = tabHost.newTabSpec("sub"); 		subSpec.setIndicator("子类", 				this.getResources().getDrawable(R.drawable.content256)); 		subSpec.setContent(R.id.tab_2);  		tabHost.addTab(parentSpec); 		tabHost.addTab(subSpec);  	} }

         

   

                    然后使用第二种方法创建TabHost

                  主Activity类:

package com.jiangqq.tabhost;  import android.app.Activity; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.TabSpec;  /**  * 本例是实现TabHost----->直接在XML文件中进行配置 【注意】在xml文件中  * TahWidget和FrameLayout标签中的ID,必须要使用Android中默认的  *   * @author jiangqq  *   */ public class TabHostActivity_First extends Activity { 	/** Called when the activity is first created. */ 	@Override 	public void onCreate(Bundle savedInstanceState) { 		super.onCreate(savedInstanceState); 		setContentView(R.layout.tabhost_first); 		// 获取TabHost 		TabHost tabHost = (TabHost) findViewById(R.id.tabs); 		tabHost.setup(); 		// 设置选项卡 		// 参数:是选项卡的标签 		TabSpec parentSpec = tabHost.newTabSpec("parent"); 		parentSpec.setIndicator("基类", 				this.getResources().getDrawable(R.drawable.announcements256)); 		parentSpec.setContent(R.id.tab_1);  		TabSpec subSpec = tabHost.newTabSpec("sub"); 		subSpec.setIndicator("子类", 				this.getResources().getDrawable(R.drawable.content256)); 		subSpec.setContent(R.id.tab_2);  		tabHost.addTab(parentSpec); 		tabHost.addTab(subSpec);  	} }

       布局文件:

     

      

     大家可以比较一下两种方法的异同点,差异不是很大,创建起来也比较简单