Android的TabHost

哎,看来我的学习能力真是差啊,搞一个简单的tab居然搞了5个小时才弄好,

其实官方的demo更加清楚,呵呵。

 

 

这边的a.class,b.class,c.class 中的a,b,c都是类的名字,不同的activity。

 

文章是转来的,我绝对还挺不错的,就写了

 

 

 

 

 

 

 

Android的TabHost是一个很好的分页的控件

能够把自己的程序的多个activity组织起来

 

这里面联系到的概念有ActivityGroup

TabActivity

 

使用TabHost构建程序有两种方法

一种是在java代码里,一种是在xml代码里

 

一种方法是在java里直接写

 

[java]  view plain copy
  1. private TabHost mtabHost;  
  2. mtabHost = getTabHost();   
  3.                  mtabHost.addTab(mtabHost.newTabSpec("tab1")   
  4.                          .setIndicator(getString(R.string.tabs_1_tab_1), getResources().getDrawable(R.drawable.undo))   
  5.                          .setContent(this));   
  6.                  mtabHost.addTab(mtabHost.newTabSpec("tab2")   
  7.                          .setIndicator(getString(R.string.tabs_1_tab_2),getResources().getDrawable(R.drawable.undo))   
  8.                          .setContent(this));   
  9.                  mtabHost.addTab(mtabHost.newTabSpec("tab3")   
  10.                          .setIndicator(getString(R.string.tabs_1_tab_3),getResources().getDrawable(R.drawable.undo))   
  11.                          .setContent(this));   
  12.                  mtabHost.addTab(mtabHost.newTabSpec("tab4")   
  13.                          .setIndicator(getString(R.string.tabs_1_tab_4),getResources().getDrawable(R.drawable.undo))   
  14.                          .setContent(new Intent(this, inviteTab.class)));   
  15.                  mtabHost.addTab(mtabHost.newTabSpec("tab5")   
  16.                          .setIndicator(getString(R.string.tabs_1_tab_5),getResources().getDrawable(R.drawable.tab_set))   
  17.                          .setContent(this));   
  18.                  mtabHost.addTab(mtabHost.newTabSpec("tab6")   
  19.                          .setIndicator(getString(R.string.tabs_1_tab_6),getResources().getDrawable(R.drawable.undo))   
  20.                          .setContent(this));   
  21.                  mtabHost.addTab(mtabHost.newTabSpec("tab7")   
  22.                          .setIndicator(getString(R.string.tabs_1_tab_7),getResources().getDrawable(R.drawable.tab_help))   
  23.                          .setContent(this));   
  24.                  mtabHost.addTab(mtabHost.newTabSpec("tab8")   
  25.                          .setIndicator(getString(R.string.tabs_1_tab_8),getResources().getDrawable(R.drawable.tab_help))   
  26.                          .setContent(this));   
  27.                  mtabHost.setOnTabChangedListener( this);  
 

 

 

然后需要重载两个函数

 

[java]  view plain copy
  1. public void onTabChanged(String tagString) {  
  2.         // TODO Auto-generated method stub  
  3.           
  4.     }  
  5.     @Override  
  6.     public View createTabContent(String arg0) {  
  7.      final TextView tv = new TextView(this);   
  8.      tv.setText("Content for tab with tag " + arg0);   
  9.  return tv;  
  10. }   
 

 

 

这样就可以实现一个初步的TabHost

 

 

另外一种方法

还可以在xml文件里画TabHost界面

 

比如最近我做一个项目,就遇到需要把TabHost放在屏幕下方

 

代码如下

这是main.xml

 

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <TabHost android:id="@+id/edit_item_tab_host"  
  6.         android:layout_width="fill_parent" android:layout_height="fill_parent">  
  7.         <LinearLayout android:orientation="vertical"  
  8.             android:layout_width="fill_parent" android:layout_height="fill_parent"  
  9.             android:padding="5dp">  
  10.             <FrameLayout android:id="@android:id/tabcontent"  
  11.                 android:layout_width="fill_parent" android:layout_height="wrap_content"  
  12.                 android:padding="5dp" android:layout_weight="1" />  
  13.             <TabWidget android:id="@android:id/tabs"  
  14.                 android:layout_width="fill_parent" android:layout_height="wrap_content"  
  15.                 android:layout_weight="0" />  
  16.         </LinearLayout>  
  17.     </TabHost>  
  18. </LinearLayout>  
 

 

主文件里

 

 

[c-sharp]  view plain copy
  1. public static TabHost tab_host;  
  2. setContentView(R.layout.main);  
  3. tab_host = (TabHost) findViewById(R.id.edit_item_tab_host);  
  4.         tab_host.setup(this.getLocalActivityManager());  
  5.         TabSpec ts1 = tab_host.newTabSpec("TAB_1");   
  6.         ts1.setIndicator(getString(R.string.a),getResources().getDrawable(R.drawable.a));   
  7.         ts1.setContent(new Intent(this, a.class));   
  8.         tab_host.addTab(ts1);  
  9.         TabSpec ts2 = tab_host.newTabSpec("TAB_2");   
  10.         ts2.setIndicator(getString(R.string.b),getResources().getDrawable(R.drawable.b));   
  11.         ts2.setContent(new Intent(this, b.class));   
  12.         tab_host.addTab(ts2);  
  13.         TabSpec ts3 = tab_host.newTabSpec("TAB_3");   
  14.         ts3.setIndicator(getString(R.string.c),getResources().getDrawable(R.drawable.c));   
  15.         ts3.setContent(new Intent(this, c.class));   
  16.         tab_host.addTab(ts3);  
  17.           
  18.         TabSpec ts4 = tab_host.newTabSpec("TAB_4");   
  19.         ts4.setIndicator(getString(R.string.d),getResources().getDrawable(R.drawable.d));   
  20.         ts4.setContent(new Intent(this, d.class));   
  21.         tab_host.addTab(ts4);  
  22.         tab_host.setCurrentTab(0);  
  23.         tab_host.setOnTabChangedListener(new OnTabChangeListener(){  
  24.             @Override  
  25.             public void onTabChanged(String tabId) {  
  26.                 // TODO Auto-generated method stub  
  27.                   
  28.               
  29.         });  
 

 

 

这样就可以构建出一个很好的TabHost的界面

你可能感兴趣的:(android)