您的位置:华清远见教育科技集团 >> Android资料 >> Android系统控件TabHost  
 
Android系统控件TabHost
分享到:

Tab标签页是Android系统界面设计时经常使用的界面控件,可以实现多个分页之间的快速切换,每个分页可以显示不同的内容。

对Tab标签页的使用,首先要设计所有的分页的界面布局,在分页设计完成后,使用代码建立Tab标签页,并给每个分页添加标识和标题,后确定每个分页所显示的界面布局。其中,每个分页建立一个XML文件,用以编辑和保存分页的界面布局,使用的方法与设计普通用户界面一样。

下面就通过一个例子来加深对Tab标签页的理解,如图1所示的效果图。


图1 Tab标签页效果图

1.建立一个“TabDemo”程序

程序包含两个XML文件,分别为tab1.xml和tab2.xml,这两个文件分别使用线性布局、相对布局和绝对布局示例中的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所示的代码,创建Tab标签页,并建立子页与界面布局直接的关联关系。

代码清单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("相对布局").setContent(R.id.layout02));
    }

该段代码中,第8行代码“public class TabDemo extends TabActivity”的声明TabDemo类继承于TabActivity,与以往继承Activity不同,TabActivity支持内嵌多个Activity或View。

第12行代码“TabHost tabHost = getTabHost();”通过getTabHost()方法获得Tab标签页的容器,用以承载可以点击的Tab标签和分页的界面布局。

第13行代码“LayoutInflater.from(this).inflate(R.layout.tab1, tabHost. getTabContent View(),true);”通过LayoutInflater将tab1.xml文件中的布局转换为Tab标签页可以使用的View对象。

第14行代码“tabHost.addTab(tabHost.newTabSpec("TAB1").setIndicator("线性布局").setContent(R.id.layout01));”使用addTab()方法添加了第1个分页,tabHost.newTabSpec ("TAB1")表明在第12行代码中建立的tabHost上,添加一个标识为TAB1的Tab分页,同时使用setIndicator()方法设定分页显示的标题,使用setContent()方法设定分页所关联的界面布局。

在使用Tab标签页时,除了像上述中将不同分页的界面布局保存在不同的XML文件中外,也可以将所有分页的布局保存在同一个XML文件中。两者有不同的利弊:

第一种方法有利于在Eclipse开发环境中进行可视化设计,并且不同分页的界面布局在不同的文件中更加易于管理。

第二种方法则可以产生较少的XML文件,同时编码时的代码也会更加简洁。

 更多相关文章

·Android系统控件ListView
·Android系统控件Spinner
·Android系统控件CheckBox 和 RadioButton
·Android系统控件Button 和 ImageButton
·Android系统控件TextView和EditText