97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android系統(tǒng)控件TabHost  
 
Android系統(tǒng)控件TabHost
分享到:

Tab標(biāo)簽頁(yè)是Android系統(tǒng)界面設(shè)計(jì)時(shí)經(jīng)常使用的界面控件,可以實(shí)現(xiàn)多個(gè)分頁(yè)之間的快速切換,每個(gè)分頁(yè)可以顯示不同的內(nèi)容。

對(duì)Tab標(biāo)簽頁(yè)的使用,首先要設(shè)計(jì)所有的分頁(yè)的界面布局,在分頁(yè)設(shè)計(jì)完成后,使用代碼建立Tab標(biāo)簽頁(yè),并給每個(gè)分頁(yè)添加標(biāo)識(shí)和標(biāo)題,后確定每個(gè)分頁(yè)所顯示的界面布局。其中,每個(gè)分頁(yè)建立一個(gè)XML文件,用以編輯和保存分頁(yè)的界面布局,使用的方法與設(shè)計(jì)普通用戶(hù)界面一樣。

下面就通過(guò)一個(gè)例子來(lái)加深對(duì)Tab標(biāo)簽頁(yè)的理解,如圖1所示的效果圖。


圖1 Tab標(biāo)簽頁(yè)效果圖

1.建立一個(gè)“TabDemo”程序

程序包含兩個(gè)XML文件,分別為tab1.xml和tab2.xml,這兩個(gè)文件分別使用線性布局、相對(duì)布局和絕對(duì)布局示例中的main.xml的代碼,并將布局的ID分別定義為layout01和layout02。

其中,tab1.xml文件代碼如代碼清單1所示。

代碼清單1 tab1.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id = "@+id/layout01"
    …
    </LinearLayout>

tab2.xml文件代碼如代碼清單5-24所示。

代碼清單5-24 tab2.xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout android:id="@+id/layout03"
    …
    </RelativeLayout>

2.修改TabDemo.java文件

在TabDemo.java文件中輸入代碼清單5-25所示的代碼,創(chuàng)建Tab標(biāo)簽頁(yè),并建立子頁(yè)與界面布局直接的關(guān)聯(lián)關(guān)系。

代碼清單5-25 TabDemo.java

package com.example.TabDemo;

    import android.app.TabActivity;
    import android.os.Bundle;
    import android.widget.TabHost;
    import android.view.LayoutInflater;

    public class TabDemo extends TabActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TabHost tabHost = getTabHost();
        LayoutInflater.from(this).inflate(R.layout.tab1,
            tabHost.getTabContentView(),true);
        LayoutInflater.from(this).inflate(R.layout.tab2,
            tabHost.getTabContentView(),true);
        tabHost.addTab(tabHost.newTabSpec("TAB1")
            .setIndicator("線性布局").setContent(R.id.layout01));
        tabHost.addTab(tabHost.newTabSpec("TAB2")
            .setIndicator("相對(duì)布局").setContent(R.id.layout02));
    }

該段代碼中,第8行代碼“public class TabDemo extends TabActivity”的聲明TabDemo類(lèi)繼承于TabActivity,與以往繼承Activity不同,TabActivity支持內(nèi)嵌多個(gè)Activity或View。

第12行代碼“TabHost tabHost = getTabHost();”通過(guò)getTabHost()方法獲得Tab標(biāo)簽頁(yè)的容器,用以承載可以點(diǎn)擊的Tab標(biāo)簽和分頁(yè)的界面布局。

第13行代碼“LayoutInflater.from(this).inflate(R.layout.tab1, tabHost. getTabContent View(),true);”通過(guò)LayoutInflater將tab1.xml文件中的布局轉(zhuǎn)換為T(mén)ab標(biāo)簽頁(yè)可以使用的View對(duì)象。

第14行代碼“tabHost.addTab(tabHost.newTabSpec("TAB1").setIndicator("線性布局").setContent(R.id.layout01));”使用addTab()方法添加了第1個(gè)分頁(yè),tabHost.newTabSpec ("TAB1")表明在第12行代碼中建立的tabHost上,添加一個(gè)標(biāo)識(shí)為T(mén)AB1的Tab分頁(yè),同時(shí)使用setIndicator()方法設(shè)定分頁(yè)顯示的標(biāo)題,使用setContent()方法設(shè)定分頁(yè)所關(guān)聯(lián)的界面布局。

在使用Tab標(biāo)簽頁(yè)時(shí),除了像上述中將不同分頁(yè)的界面布局保存在不同的XML文件中外,也可以將所有分頁(yè)的布局保存在同一個(gè)XML文件中。兩者有不同的利弊:

第一種方法有利于在Eclipse開(kāi)發(fā)環(huán)境中進(jìn)行可視化設(shè)計(jì),并且不同分頁(yè)的界面布局在不同的文件中更加易于管理。

第二種方法則可以產(chǎn)生較少的XML文件,同時(shí)編碼時(shí)的代碼也會(huì)更加簡(jiǎn)潔。

 更多相關(guān)文章

·Android系統(tǒng)控件ListView
·Android系統(tǒng)控件Spinner
·Android系統(tǒng)控件CheckBox 和 RadioButton
·Android系統(tǒng)控件Button 和 ImageButton
·Android系統(tǒng)控件TextView和EditText