Android中选项卡TabHost的基本使用

        今天来学习一下选项卡(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);  	} }

       布局文件:

     

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical" >      <TabHost         android:id="@+id/tabs"         android:layout_width="fill_parent"         android:layout_height="fill_parent" >          <LinearLayout             android:layout_width="fill_parent"             android:layout_height="fill_parent"             android:orientation="vertical" >              <TabWidget                 android:id="@android:id/tabs"                 android:layout_width="fill_parent"                 android:layout_height="wrap_content" >             </TabWidget>              <FrameLayout                 android:id="@android:id/tabcontent"                 android:layout_width="fill_parent"                 android:layout_height="fill_parent" >                  <TextView                     android:id="@+id/tab_1"                     android:layout_width="fill_parent"                     android:layout_height="fill_parent"                     android:text="jiangqq_TabHostDemo_First" >                 </TextView>                  <TextView                     android:id="@+id/tab_2"                     android:layout_width="fill_parent"                     android:layout_height="fill_parent"                     android:text="jiangqq_TabHostDemo_Second" >                 </TextView>             </FrameLayout>         </LinearLayout>     </TabHost>  </LinearLayout>
      


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

你可能感兴趣的:(android,xml,layout,Class,手机,encoding)