导航标签使用

一、创建Activity:

Android的导航标签由一个叫做TabActivity创建,TabActivity继承自ActivityGroup。

二、获取管理标签的对象:

在这个Activity的onCreate()方法里使用getTabHost()方法,即可获得控制导航标签的TabHost(管理标签的对象)。

TabHost继承自android.widget.FrameLayout
它有2个内嵌接口:
TabHost.OnTabChangeListener(实现该接口可以相应TabChange事件)、TabHost.TabContentFactory(实现该接口约定的方法createTabContent(String tag)可以控制标签中的内容显示)

和一个内嵌类TabHost.TabSpec(该类包括了标签的indicator、content、tag)

三、填充标签管理对象
给TabHost添加标签通过
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("tab2").setContent(this));方法实现,参数是一个TabSpec。而TabSpec通过newTabSpec()方法创建,其中第一个设置即前面说的tag,第二个设置即前面说的indicatior,第三个设置即是标签的现实内容content,这里setContent(this)的写法是因为实现了TabHost.TabContentFactory接口。

四、创建Content,填充一个具体的标签
前面的TabSpec的创建时写到setContent(this),这即是把自身作为一个content填充给标签。Content的创建不局限于这种模式,一般有一下3种:
1、通过layout布局的view填充  :setContent(R.id.view1)
2、通过实现TabHost.TabContentFactory接口的createTabContent(String tag)方法创建 :setContent(this)
3、通过传入一个Intent启动一个Activity创建 : setContent(new Intent(this, List1.class))

具体使用哪一种方式,需要据应用情况而定,没有优劣之分

贴一段代码(通过layout的viewID创建content):
public class Tabs1 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TabHost tabHost = getTabHost();
        
        LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true);

        tabHost.addTab(tabHost.newTabSpec("tab1")
                .setIndicator("tab1")
                .setContent(R.id.view1));
        tabHost.addTab(tabHost.newTabSpec("tab3")
                .setIndicator("tab2")
                .setContent(R.id.view2));
        tabHost.addTab(tabHost.newTabSpec("tab3")
                .setIndicator("tab3")
                .setContent(R.id.view3));
    }
}


你可能感兴趣的:(android)