TabHost详解0

一、TabHost是一个选项卡容器,通过标签页将多个Activity整合到一起。

TabHost的三要素为:TabWidget、FrameLayout、List<TabSpec>。

其主要的使用方式有两种: 1.继承TabActivity,结合对应的xml配置文件导入tab选项内容体 

 2.继承Activity,结合拥有TabHost标签的xml配置文件导入

第一种方式:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/tab1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/view1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TabHost 1" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <TextView
            android:id="@+id/view2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TabHost 2" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab3"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/view3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TabHost 3" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab4"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/view4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TabHost 4" />
    </LinearLayout>

</LinearLayout>
public class MainActivity extends TabActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获得TabHost对象
        TabHost tb=this.getTabHost();
        LayoutInflater.from(this).inflate(R.layout.activity_main, tb.getTabContentView(), true);
        //setIndicator方法设置选项卡的标题和对应图标  setContent设置对应的内容
        tb.addTab(tb.newTabSpec("spec1").setIndicator("选项卡1",getResources().getDrawable(R.drawable.audio)).setContent(R.id.tab1));
        tb.addTab(tb.newTabSpec("spec2").setIndicator("选项卡2",getResources().getDrawable(R.drawable.folder)).setContent(R.id.tab2));
        tb.addTab(tb.newTabSpec("spec3").setIndicator("选项卡3",getResources().getDrawable(R.drawable.image)).setContent(R.id.tab3));
    }
}

第二种方式:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabHost
        android:id="@+id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                 >

            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>

</LinearLayout>

其中 TabWidget、FrameLayout的名字必须是固定的。

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TabHost tb=(TabHost)findViewById(R.id.tabhost);
        tb.setup();

        TabHost.TabSpec spec1=tb.newTabSpec("tab1");
        spec1.setContent(R.id.tab1);
        spec1.setIndicator("选项卡一");
        tb.addTab(spec1);

        TabHost.TabSpec spec2=tb.newTabSpec("tab2");
        spec2.setContent(R.id.tab2);
        spec2.setIndicator("选项卡二");
        tb.addTab(spec2);

        TabHost.TabSpec spec3=tb.newTabSpec("tab3");
        spec3.setContent(R.id.tab3);
        spec3.setIndicator("选项卡三");
        tb.addTab(spec3);
    }
}



Tabhost中的常用方法:

getTag():获取标签字符串

getCurrentTab():获取当前选项卡ID

getTabWidget():根据系统规定的id:tabs来找到Tabwidget

setOnTabChangedListener():change事件

时间: 2024-09-20 08:01:32

TabHost详解0的相关文章

对话框详解0

对话框是人机交互的重要组成部分,android中使用AlertDialog.Builder类来创建对话框,本文详解了各种对话框的创建方法: ps:本文采用activity托管的方式来创建对话框,即使用onCreateDialog方法来创建.当调用Activity类的showDialog方法时,系统会调用onCreateDialog方法来返回一个dialog,即showDialog将参数传进onCreateDialog方法.如果使用一般的创建方法,则和程序方法里面的做法相同. main.xml布局

c++ builder中的 XMLDocument 类详解(0) - xml 语法提示

1.忽略空白2.注释: <!-- -->3.指令: <? ?>4.特殊字符: < > ' " &  替代: < > &apos; " &5.二进制数据: <![CDATA [...]]>6.区分大小写7.标记不能交叠8.单标记, 也就是空元素, 如: <node/>, 只用属性记录数据9.属性值在引号内10.xml 中的元素与属性的名字, 必须以字母或 _ 开头, 后面可以是字母.数字或 _

Toast使用详解0

Toast是Android中常用的提示工具. Toast的常用使用方法有两种:使用系统默认的Toast 或者是自定义的Toast. 其效果如下: 主程序: public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activit

日历控件开发详解0

从今天开始,我们将一步步学习如何实现一个Android的日历控件,今天是第一天! 一.准备工作之配置参数 制作一个日历控件,我们首先要配置一些参数 1.尺寸 dimension.xml <?xml version="1.0" encoding="utf-8"?> <resources> <!-- 日历边框间距 --> <dimen name="margin">10dp</dimen> &

SQLite详解0

1.SQLite简介 SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机.PDA.MP3)提供的一种高效的数据库引擎.它有如下特征:轻量级.独立性.隔离性.跨平台.多语言接口.安全性.SQLite数据库没有服务器进程.所有的内容包含在同一个单文件中.该文件是跨平台的,可以自由复制.基于其自身的先天优势,SQLite在嵌入式领域得到广泛应用. 2.SQLite数据类型 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断.SQLite具有以下

ListView详解0

ListView常用方法总结 1.listview拖动变黑解决方法 在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了. 这个要从Listview的效果说起,

仿iPhone assistivetouch小工具实现详解0

大家都知道iPhone下的assistivetouch这个小圆点 对,就是这个玩意儿 但是Android上没这玩意儿,所有今天我们就给Android上弄上一个这个玩意儿 看见没,和iPhone下的基本一样吧 我准备分几次讲这个项目的开发实例写出来,照例,今天搞定界面: 1.控制球界面 2.菜单界面 这些都不难,大家看下就懂了 控制球界面: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xml

菜单使用详解0

Android中菜单分为两种:选项菜单和上下午菜单. 本次讲解选项菜单. 1.创建选项菜单: public boolean onCreateOptionsMenu(Menu menu){ /* */ menu.add(1,1,1,"菜单1"); menu.add(1,2,2,"菜单2"); menu.add(1,3,3,"菜单3"); menu.add(1,4,4,"菜单4"); return true; } 参数含义如程序所

详解Android应用中使用TabHost组件进行布局的基本方法_Android

TabHost布局文件 我们先来了解一下布局文件的基本内容:1. 根标签及id 设置Android自带id : XML布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id : android:id=@android:id/tabhost ; getHost()获取前提 : 设置了该id之后, 在Activity界面可以使用 getHost(), 获取这个TabHost 视图对象; 示例 : 复制代码 代码如下: <tabhost android:id="@an