大家在进行其他语言的编程时应该都见过甚至用过标签组件,Android开发中也经常会用到标签组件。一般情况下如果一屏放不下所有组件,则我们可能会选择滚动视图,另外一种方法就是使用标签组件对屏幕进行分页,单击不同标签显示它对应的内容。Android中的TabHost是标签组件的核心类,也是标签的集合,每一个标签显示一个View或一个Activity

       TabHost简介

       所谓的TabHost是提供选项卡(Tab页)的窗口视图容器.此对象包含两个子对象: 一个是使用户可以选择指定标签页的标签的集合;另一个是用于显示标签页内容的 FrameLayout. 选项卡中的个别元素一般通过其容器对象来控制,而不是直接设置子元素本身的值。

       常用方法:

                   addTab(TabHost.TabSpec tabSpec):添加一项 Tab 页

                   clearAllTabs():清除所有与之相关联的 Tab 页.

                   getCurrentTab():返回当前 Tab 页.

                   getTabContentView():返回包含内容的 FrameLayout

                   newTabSpec(String tag):返回一个与之关联的新的 TabSpec

       TabHost开发实例

       下面是TabHost组件的一个开发实例,代码如下:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"  
  5.     android:background="@drawable/framebackground">  
  6.     <!-- 第一个Tab中得layout -->  
  7.     <LinearLayout android:id="@+id/frist_tab_linearlayout"  
  8.         android:layout_width="fill_parent"    
  9.         android:layout_height="fill_parent"  
  10.         android:orientation="vertical"    
  11.         >  
  12.         <TextView    
  13.             android:layout_width="wrap_content"  
  14.             android:layout_height="wrap_content"  
  15.             android:layout_gravity="center_horizontal"  
  16.             android:gravity="center_vertical"  
  17.             android:layout_marginTop="100dp"  
  18.             android:text="@string/love"  
  19.             android:textColor="#000000"  
  20.             android:textSize="20sp"  
  21.         />  
  22.         <TextView    
  23.             android:layout_width="220dp"  
  24.             android:layout_height="wrap_content"  
  25.             android:layout_gravity="center_horizontal"  
  26.             android:gravity="center_vertical"  
  27.             android:paddingTop="17dp"  
  28.             android:text="@string/love_text"  
  29.             android:textColor="#000000"  
  30.             android:textSize="15sp"  
  31.         />  
  32.     </LinearLayout>  
  33.     <!-- 第二个Tab中得layout -->  
  34.     <LinearLayout android:id="@+id/second_tab_linearlayout"  
  35.         android:layout_width="fill_parent"    
  36.         android:layout_height="fill_parent"  
  37.         android:orientation="vertical"    
  38.         >  
  39.         <TextView    
  40.             android:layout_width="wrap_content"  
  41.             android:layout_height="wrap_content"  
  42.             android:layout_gravity="center_horizontal"  
  43.             android:gravity="center_vertical"  
  44.             android:layout_marginTop="100dp"  
  45.             android:text="@string/friendship"  
  46.             android:textColor="#000000"  
  47.             android:textSize="20sp"  
  48.         />  
  49.         <TextView    
  50.             android:layout_width="220dp"  
  51.             android:layout_height="wrap_content"  
  52.             android:layout_gravity="center_horizontal"  
  53.             android:gravity="center_vertical"  
  54.             android:paddingTop="17dp"  
  55.             android:text="@string/friendship_text"  
  56.             android:textColor="#000000"  
  57.             android:textSize="15sp"  
  58.         />  
  59.     </LinearLayout>  
  60.     <!-- 第三个Tab中得layout -->  
  61.     <LinearLayout android:id="@+id/third_tab_linearlayout"  
  62.         android:layout_width="fill_parent"    
  63.         android:layout_height="fill_parent"  
  64.         android:orientation="vertical"    
  65.         >  
  66.         <TextView    
  67.             android:layout_width="wrap_content"  
  68.             android:layout_height="wrap_content"  
  69.             android:layout_gravity="center_horizontal"  
  70.             android:gravity="center_vertical"  
  71.             android:layout_marginTop="100dp"  
  72.             android:text="@string/kinship"  
  73.             android:textColor="#000000"  
  74.             android:textSize="20sp"  
  75.         />  
  76.         <TextView    
  77.             android:layout_width="220dp"  
  78.             android:layout_height="wrap_content"  
  79.             android:layout_gravity="center_horizontal"  
  80.             android:gravity="center_vertical"  
  81.             android:paddingTop="17dp"  
  82.             android:text="@string/kinship_text"  
  83.             android:textColor="#000000"  
  84.             android:textSize="15sp"  
  85.         />  
  86.     </LinearLayout>  
  87.        
  88. </FrameLayout>  
XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.      <group    
  5.         android:id="@+id/love_group">  
  6.             <item    
  7.                 android:id="@+id/love_item"    
  8.                 android:icon="@drawable/aiqing"    
  9.                 android:title="Love">  
  10.             </item>  
  11.      </group>  
  12. </menu>  
XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.      <group    
  5.         android:id="@+id/kinship_group">  
  6.             <item    
  7.                 android:id="@+id/kinship_item"    
  8.                 android:icon="@drawable/qinqing"    
  9.                 android:title="KinShip">  
  10.             </item>  
  11.      </group>  
  12. </menu>  
XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.      <group    
  5.         android:id="@+id/friendship_group">  
  6.             <item    
  7.                 android:id="@+id/friendship_item"    
  8.                 android:icon="@drawable/youqing"    
  9.                 android:title="FriendShip">  
  10.             </item>  
  11.      </group>  
  12. </menu>  
Java代码
  1. package net.csdn.blog.androidtoast;   
  2.   
  3.   
  4. import android.app.TabActivity;   
  5. import android.graphics.Color;   
  6. import android.os.Bundle;   
  7. import android.view.LayoutInflater;   
  8. import android.view.Menu;   
  9. import android.view.MenuInflater;   
  10. import android.widget.TabHost;   
  11.   
  12. public class TabHostExampleActivity extends TabActivity {   
  13.        
  14.     TabHost mTabHost;   
  15.     int mMenuTag=0;   
  16.     Menu mMenu;   
  17.     static final int mMenuResources[] = {    
  18.           R.layout.love_menu,   
  19.           R.layout.friendship_menu,    
  20.           R.layout.kinship_menu   
  21.           };   
  22.        
  23.     /** Called when the activity is first created. */  
  24.     @Override  
  25.     protected void onCreate(Bundle savedInstanceState) {   
  26.         // TODO Auto-generated method stub   
  27.         super.onCreate(savedInstanceState);   
  28.            
  29.         //获取TabHost   
  30.         mTabHost=this.getTabHost();   
  31.         //过滤出TabHost布局   
  32.         LayoutInflater.from(this).inflate(R.layout.main, mTabHost.getTabContentView(), true);   
  33.         //为TabHost设置背景颜色   
  34.         mTabHost.setBackgroundColor(Color.argb(1003080160));   
  35.            
  36.         //增加三个选型卡 并设置其图标及绘制布局   
  37.         mTabHost.addTab(mTabHost.newTabSpec("One")   
  38.                  .setIndicator("", getResources().getDrawable(R.drawable.aiqing))   
  39.                  .setContent(R.id.frist_tab_linearlayout));   
  40.            
  41.         mTabHost.addTab(mTabHost.newTabSpec("Two")   
  42.                 .setIndicator("", getResources().getDrawable(R.drawable.youqing))   
  43.                 .setContent(R.id.second_tab_linearlayout));   
  44.            
  45.         mTabHost.addTab(mTabHost.newTabSpec("Three")   
  46.                 .setIndicator("", getResources().getDrawable(R.drawable.qinqing))   
  47.                 .setContent(R.id.third_tab_linearlayout));   
  48.            
  49.         //添加监听事件   
  50.         mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {   
  51.                
  52.             @Override  
  53.             public void onTabChanged(String tabId) {   
  54.                 if (tabId.equals("One")) {   
  55.                     mMenuTag = 1;   
  56.                 }   
  57.                 if (tabId.equals("Two")) {   
  58.                     mMenuTag = 2;   
  59.                 }   
  60.                 if (tabId.equals("Three")) {   
  61.                     mMenuTag = 3;   
  62.                 }   
  63.                 if (mMenu != null) {   
  64.                     onCreateOptionsMenu(mMenu);   
  65.                 }   
  66.             }   
  67.         });   
  68.            
  69.            
  70.     }   
  71.   
  72.     //创建对应的菜单项   
  73.     @Override  
  74.     public boolean onCreateOptionsMenu(Menu menu) {   
  75.         mMenu = menu;   
  76.         mMenu.clear();   
  77.            
  78.         //获取菜单过滤器   
  79.         MenuInflater inflater = getMenuInflater();           
  80.           
  81.         switch (mMenuTag) {   
  82.         case 1:   
  83.             //动态加入数组中对应的menu.xml   
  84.             inflater.inflate(mMenuResources[0], menu);   
  85.             break;   
  86.         case 2:   
  87.             inflater.inflate(mMenuResources[1], menu);   
  88.             break;   
  89.         case 3:   
  90.             inflater.inflate(mMenuResources[2], menu);   
  91.             break;   
  92.         default:   
  93.             inflater.inflate(mMenuResources[0], menu);   
  94.             break;   
  95.         }   
  96.         return super.onCreateOptionsMenu(menu);   
  97.     }   
  98. }  

       程序的运行结果的界面如下: 

Android开发之TabHost组件实例

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/example/44.html
2012年5月18日
发布:鸡啄米 分类:Android开发实例 浏览: 评论:0