Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> TabHost理解與使用,TabHost理解使用

TabHost理解與使用,TabHost理解使用

編輯:關於android開發

TabHost理解與使用,TabHost理解使用


一.繼承關系

java.lang.Object  
   ↳ 	android.view.View  
  	   ↳ 	android.view.ViewGroup  
  	  	   ↳ 	android.widget.FrameLayout  
  	  	  	   ↳ 	android.widget.TabHost

 

二.概述

TAB的容器。這個對象包含兩個子元素:

  1. TabWidget:管理標簽(tabs),用戶點擊來選擇一個特定的標簽,是它告訴TabHost去切換界面的
  2. FrameLayout:對象顯示該頁的內容

 

三.常用方法

  1. public void addTab(TabHost.TabSpec tabSpec)
  2. public void setup ():在addTab之前要先調用setup

四.三個內部類

  1. class:TabHost.TabSpec
  2. interface:TabHost.OnTabChangeLisetener
  3. interface:TabHost.TabContentFactory

TabHost.TabSpec

tab(標簽)有一個indicator,content後台tag.例如:

tabHost.addTab(tabHost.newTabSpec("tab_time").setIndicator("時鐘").setContent(R.id.tab_time));

1.indicator

有三個重載的方法可以設置標簽的名字和圖案。返回值都是TabHost.TabSpec

  1. setIndicator(CharSequence label)
  2. setIndicator(View view)
  3. setIndicator(CharSequence lable,Drawable icon)

content

返回值都是TabHost.TabSpe。是第一個比較常用。

  1. **setContent(int viewId)**傳入視圖的ID與之關聯起來
  2. setContet(Intent intent)在TabHost.TabContentFactory創建的這個視圖的內容
  3. setContent((TabHost.TabContentFactory contentFactory)

tag

這是相當於一個tag的身份證,在 new TabSpec(String tag)決定了

 

五.例子

http://www.cnblogs.com/Mihai/

 

六.源碼大觀

public class TabHost...{
    //常用屬性
    private TabWidget mTabWidget;
    private FrameLayout mTabContent;
    private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
    private OnKeyListener mTabKeyListener;
    public void setup(){
        //這裡實例化TabWiget
        mTabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs);
        if (mTabWidget == null) {
            throw new RuntimeException(
                    "Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'");
        }
        ....
        mTabWidget.setTabSelectionListener(new TabWidget.OnTabSelectionChanged() {
            public void onTabSelectionChanged(int tabIndex, boolean clicked) {
                setCurrentTab(tabIndex);
                if (clicked) {
                    mTabContent.requestFocus(View.FOCUS_FORWARD);
                }
            }
        });

        mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent);
        if (mTabContent == null) {
            throw new RuntimeException(
                    "Your TabHost must have a FrameLayout whose id attribute is "
                            + "'android.R.id.tabcontent'");
        }
    }
}

 

注意:在自定義自己的TabHost的時候,Tabwiget和FrameLayout不可以自定義Id。為它需要在setup裡面實例化,因此需要在addTab添加內容之前調用setup方法

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved