android学习笔记(28)选项卡(TabHost)的功能和用法

文章标签: android,android-tabhost
2014-12-26 19:48:40     人阅读    

选项卡(TabHost)的功能和用法
            TabHost是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个 标签页相当于获得了一个与外部容器相同大小的组件摆放区域。通过这种方式,就可以在一 个容器里放置更多组件,例如许多手机系统都会在同一个窗口定义多个标签页来显示通话记 录,包括“未接电话”、“已接电话”、“呼出电话”等。


 

           TabHost仅仅是一个简单的容器,它提供了如下两个方法来创建选项卡、添加选项卡。
newTabSpec(Stringtag)      :创建选项卡。
addTab(TabHost.TabSpec tabSpec)   添加选项卡。
使用TabHost的一般步骤为:
在界面布局中定义TabHost组件,并为该组件定义该选项卡的内容。
Activity 应该继承 TabActivity。
调用 TabActivity 的 getTabHost()方法获取 TabHost 对象。
通过TabHost对象的方法来创建选项卡、添加选项卡。


除此之外,TabHost还提供了一些方法获取当前选项卡,获取当前View的方法,具体可 以参考API文档;如果程序需要监控TabHost里当前标签页的改变,可以为它设置 TabHost.OnTabChangeListener 监听器。
下面通过一个简单的示例来示范选项卡的用法。
    实例:通话记录界面
下面的示例程序使用TabHost定义一个标签容器,并使用了三个LinearLayoiU来定义标 签页(实际上可以使用任何View组件来定义标签页)。该程序的界面布局文件如下。
程序清单:codesV)2\2.4\TabHostTest\res\layout\main.xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<!-- 定义第一个标签页的内容 -->
<LinearLayout android:id="@+id/tab01"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="女儿国国王 - 2010/12/12"
 android:textSize="11pt"
 />
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="东海龙女 - 2010/12/18"
 android:textSize="11pt"
 />
</LinearLayout>
<!-- 定义第二个标签页的内容 -->
<LinearLayout android:id="@+id/tab02"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="白骨精  - 2010/08/12"
 android:textSize="11pt"
 />
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="蜘蛛精 - 2010/09/20"
 android:textSize="11pt"
 />
</LinearLayout>
<!-- 定义第三个标签页的内容 -->
<LinearLayout android:id="@+id/tab03"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:textSize="11pt"
 >
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="孙悟空 - 2010/09/19"
 android:textSize="11pt"
 />
<TextView 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="猪八戒  - 2010/10/12"
 android:textSize="11pt"
 /> 
</LinearLayout>  
</TabHost>

上面使用TabHost定义了一个TabHost组件,该组件里包含三个LinearLayout组件。下 面的主程序可以为该TabHost添加三个标签页。
程序清单:codes\02\2.4\TabHostTest\src\org\crazyit\tabhostVTabHostTest.java

package org.crazyit.tabhost;

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

public class TabHostTest extends TabActivity
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  TabHost tabHost = getTabHost();
  //设置使用TabHost布局
  LayoutInflater.from(this).inflate(R.layout.main,
    tabHost.getTabContentView(), true);
  //添加第一个标签页
  tabHost.addTab(tabHost.newTabSpec("tab1")
   .setIndicator("已接电话")
   .setContent(R.id.tab01)); 
  //添加第二个标签页
  tabHost.addTab(tabHost.newTabSpec("tab2")
   //在标签标题上放置图标
   .setIndicator("呼出电话" 
    , getResources().getDrawable(R.drawable.icon))
   .setContent(R.id.tab02)); 
  //添加第三个标签页
  tabHost.addTab(tabHost.newTabSpec("tab3")
   .setIndicator("未接电话")
   .setContent(R.id.tab03));   
 }
}


上面的程序中第一行粗体字代码设置该应用使用标签页 布局,第二行代码就是为TabHost添加标签的具体代码。上面 的程序一共添加了三个标签页,其中第一个标签的标题上还添 加了一个图片。
运行上面的程序将看到如图2.38所示界面。


上面的程序调用了 TabHost.TabSpec对象的setContent(int viewld)方法来设置标签页内容;除此之外还可调用setContent(Intentintent)方法来设置标签页 内容,Intent还可用于启动其他Activity——这意味着TabHost.TabSpec可直接装载另一个Activity。本书后面有关于Intent的详细介绍。


原文地址:http://www.itmmd.com/201412/390.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

andorid 把正方形位图见切成圆形   上一篇
下一篇  android学习笔记(27)星级评分条(RatingBar )
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!