Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android TabActivity使用方法

Android TabActivity使用方法

編輯:關於Android編程

TabActivity

首先Android裡面有個名為TabActivity來給我們方便使用。其中有以下可以關注的函數: public TabHost getTabHost () 獲得當前TabActivity的TabHost public TabWidget getTabWidget () 獲得當前TabActivity 的TabWidget public void setDefaultTab (String tag) 這兩個函數很易懂, 就是設置默認的Tab public void setDefaultTab (int index) 通過tab名——tag或者index(從0開始) protected void onRestoreInstanceState (Bundle state) 這 兩個函數的介紹可以 protected void onSaveInstanceState (Bundle outState) 參考 Activity的生命周期

TabHost

那麼我們要用到的Tab載體是TabHost,需要從TabActivity.getTabHost獲取。 現在看看TabHost類,它有3個內嵌類:1個類TabHost.TabSpec,2個接口 TabHost.TabContentFactory和TabHost.OnTabChangeListener。後面會介紹這些類和接口。 TabHost類的一些函數: public void addTab (TabHost.TabSpec tabSpec) 添加 tab,參數TabHost.TabSpec通過下面的函數返回得到 public TabHost.TabSpec newTabSpec (String tag) 創 建TabHost.TabSpec public void clearAllTabs () remove所有的Tabs public int getCurrentTab () public String getCurrentTabTag () public View getCurrentTabView () public View getCurrentView () public FrameLayout getTabContentView () 返回Tab content的FrameLayout public TabWidget getTabWidget () public void setCurrentTab (int index) 設置當前的Tab by index public void setCurrentTabByTag (String tag) 設置當前的Tab by tag public void setOnTabChangedListener (TabHost.OnTabChangeListener l) 設置TabChanged事件的響應處理 public void setup () 這個函數後面介紹

TabHost.TabSpec

從上面的函數可以知道如何添加tab了,要注意,這裡的Tag(標簽),不是Tab按鈕上的文字。 而要設置tab的label和content,需要設置TabHost.TabSpec類。 引用SDK裡面的話——“A tab has a tab indicator, content, and a tag that is used to keep track of it.”,TabHost.TabSpec就是管理這3個東西: public String getTag () public TabHost.TabSpec setContent public TabHost.TabSpec setIndicator 我理解這裡的Indicator 就是Tab上的label,它可以 設置labelsetIndicator (CharSequence label) 或者同時設置label和iconsetIndicator (CharSequence label, Drawable icon) 或者直接指定某個viewsetIndicator (View view) 對於Content ,就是Tab裡面的內容,可以 設置View的idsetContent(int viewId) 或者TabHost.TabContentFactory 的createTabContent(String tag)來處理:setContent(TabHost.TabContentFactory contentFactory) 或者用new Intent 來引入其他Activity的內容:setContent(Intent intent)

主程序代碼
Acitvit裡面的代碼代碼 收藏代碼
  1. package com.yang.tabletest;
  2. import android.app.TabActivity;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.widget.TabHost;
  6. public class TableTestAcitivity extends TabActivity{
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. //setContentView(R.layout.main);
  12. //獲得當前TabActivity的TabHost
  13. TabHost tabHost = getTabHost();
  14. LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true);
  15. tabHost.addTab(tabHost.newTabSpec("tab1")
  16. .setIndicator("主頁")
  17. .setContent(R.id.view1));
  18. tabHost.addTab(tabHost.newTabSpec("tab2")
  19. .setIndicator("標題")
  20. .setContent(R.id.view2));
  21. tabHost.addTab(tabHost.newTabSpec("tab3")
  22. .setIndicator("簡介")
  23. .setContent(R.id.view3));
  24. tabHost.addTab(tabHost.newTabSpec("tab4")
  25. .setIndicator("關於")
  26. .setContent(R.id.view4));
  27. }
  28. }

    tabls.xml裡面的代碼 Tabi.xml代碼 收藏代碼
    1. <frameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent">
    2. android:background="@drawable/blue"
    3. android:layout_width="fill_parent"
    4. android:layout_height="fill_parent"
    5. android:text="@string/tabs_1_tab_1"/>
    6. android:background="@drawable/red"
    7. android:layout_width="fill_parent"
    8. android:layout_height="fill_parent"
    9. android:text="@string/tabs_1_tab_2"/>
    10. android:background="@drawable/green"
    11. android:layout_width="fill_parent"
    12. android:layout_height="fill_parent"
    13. android:text="@string/tabs_1_tab_3"/>
    14. android:background="@drawable/green"
    15. android:layout_width="fill_parent"
    16. android:layout_height="fill_parent"
    17. android:text="@string/tabs_1_tab_4"/>
    18. </frameLayout> string.xml的代碼
      Java代碼 收藏代碼
      1. Hello World, TableTestAcitivity!
      2. 阿福學習
      3. 主頁
      4. 標題
      5. 關於
      6. 返回
      7. color.xml代碼 Java代碼 收藏代碼
        1. #404040ff
        2. #ff00ff
        3. #0ff0ff
        4. #c0c0c0ff
        5. #ffFF33ff
        6. #00ffff
        7. #808080ff
        8. #ff6699ff
        9. #66ffffff
        10. #000000
        11. #FFFFFF
        12. 第二個例子的Activity代碼 Java代碼 收藏代碼
          1. package com.yang.tabletest;
          2. import android.app.TabActivity;
          3. import android.os.Bundle;
          4. import android.view.View;
          5. import android.widget.TabHost;
          6. import android.widget.TextView;
          7. public class TableTestAcitivity extends TabActivity implements TabHost.TabContentFactory{
          8. /** Called when the activity is first created. */
          9. @Override
          10. public void onCreate(Bundle savedInstanceState) {
          11. super.onCreate(savedInstanceState);
          12. final TabHost tabHost = getTabHost();
          13. tabHost.addTab(tabHost.newTabSpec("tab1")
          14. .setIndicator("主頁", getResources().getDrawable(R.drawable.test))
          15. .setContent(this));
          16. tabHost.addTab(tabHost.newTabSpec("tab2")
          17. .setIndicator("標題",getResources().getDrawable(R.drawable.test))
          18. .setContent(this));
          19. tabHost.addTab(tabHost.newTabSpec("tab3")
          20. .setIndicator("關於",getResources().getDrawable(R.drawable.test))
          21. .setContent(this));
          22. }
          23. @Override
          24. public View createTabContent(String arg0) {
          25. final TextView tv = new TextView(this);
          26. tv.setText("Content for tab with tag " + arg0);
          27. return tv;
          28. }
          29. }
            • \
            • 大小: 14.3 KB
              • TableTest.zip (25.4 KB)
              • 下載次數: 563
                • 大小: 12.6 KB
                  • TableTest2.zip (29.8 KB)
                  • 下載次數: 487
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved