android学习--TabHost选项卡组件

TabHost是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页获得了一个与外部容器相同大小的组件摆放区域。在手机系统的应用类似“未接电话”、“已接电话”、“呼出电话”等。

1 、 TabHost提供了两个方法来创建选项卡、添加选项卡

newTabSpec(String tag)  : 创建选项卡

addTab(TabHost.TabSpec  tabSpec) : 添加选项卡

2、TabHost 切换选项卡触发的监听是TabHost.OnTabChangeListener

下面通过案例来熟悉TabHost

使用TabHost的一般步骤为:

(1)在界面布局中为TabHost定义改选项卡的内容

(2)Activity继承TabActivity

(3)调用TabActivity的getTabHost()方法获取TabHost对象

(4)通过TabHost对象的方法来创建选项卡、添加选项卡

跟着上面步骤来实现TabHost案例

(1)在界面布局中为TabHost定义改选项卡的内容,一般采用FrameLayout作为根布局,每个标签页面对应一个子节点的Layout

<!-- 这是根布局 -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
      <!-- 这是第一个Tab布局 -->
        <LinearLayout
            android:id="@+id/widget_layout_Blue"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
            <EditText
                android:id="@+id/widget34"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="EditText"
                android:textSize="18sp">
            </EditText>
            <Button
                android:id="@+id/widget30"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button">
            </Button>
        </LinearLayout>

         <!-- 这是第二个Tab布局 -->
        <LinearLayout
            android:id="@+id/widget_layout_red"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"  >
            <AnalogClock android:id="@+id/widget36"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            </AnalogClock>
        </LinearLayout>

         <!-- 这是第三个Tab布局 -->
        <LinearLayout android:id="@+id/widget_layout_green"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">
            <RadioGroup
                android:id="@+id/widget43"
                android:layout_width="166px"
                 android:layout_height="98px"
                android:orientation="vertical">
                <RadioButton android:id="@+id/widget44"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="男">
                </RadioButton>
                <RadioButton android:id="@+id/widget45"
                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                    android:text="女">
                </RadioButton>
            </RadioGroup>
        </LinearLayout>
    </FrameLayout>

(2)Activity继承TabActivity

(3)调用TabActivity的getTabHost()方法获取TabHost对象

(4)通过TabHost对象的方法来创建选项卡、添加选项卡

package com.example.tabhost;

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

@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);

		//获取TabHost 对象
		TabHost tabHost = getTabHost();
		//设置使用TabHost布局
		//from(this)从这个TabActivity获取LayoutInflater
		//R.layout.main 存放Tab布局
		//通过TabHost获得存放Tab标签页内容的FrameLayout
		//是否将inflate 拴系到根布局元素上
		LayoutInflater.from(this).inflate(R.layout.activity_main,
				tabHost.getTabContentView(), true);

		//添加第一个标签页
		//setIndicator  添加表体,可以是view
		//添加tab内容   布局
		tabHost.addTab(tabHost.newTabSpec("tab1")
			.setIndicator("TAB1")
			.setContent(R.id.widget_layout_Blue)); 

		//添加第二个标签页
		tabHost.addTab(tabHost.newTabSpec("tab2")
			//在标签标题上放置图标
			.setIndicator("TAB2")
			.setContent(R.id.widget_layout_red)); 

		//添加第三个标签页
		tabHost.addTab(tabHost.newTabSpec("tab3")
			.setIndicator("TAB3")
			.setContent(R.id.widget_layout_green)); 	

		//添加监听
		tabHost.setOnTabChangedListener(new OnTabChangeListener() {

			@Override
			public void onTabChanged(String tabId) {
			   Log.i("Tab", tabId);

			}
		});
	}
}

运行后,效果如下:

android学习--TabHost选项卡组件

时间: 2024-10-10 23:15:49

android学习--TabHost选项卡组件的相关文章

Android学习——TabHost的使用二

仿QQ底端导航栏 废话不多说,直接上代码 <?xml version="1.0" encoding="UTF-8"?> <!-- Tab导航 最新版 --> <TabHost xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@android:id/tabhost"     android:layo

Android 学习笔记 7 组件通信及广播消息(二)

Intent隐式启动Activity 隐式启动的好处在于不需要在第一个组件中指明需要启动另外的哪一个组件,而由Android系统来决定,这样有利于降低组件之间的耦合度. 选择隐式启动Activity,Android系统会在程序运行时解析Intent,并根据一定的规则对Intent和组件进行匹配,使Intent上的action.data和category与目标Activity吻合.匹配的组件可以是程序本身的Activity,也可以是Android系统内置的Activity,还可以是第三方应用程序提

Android 学习笔记 6 组件通信及广播消息(一)

Intent的概念 Intent的官方解释是“An Intent is a messaging object you can use to request an action from another app component. ”这里的app component就是指安卓activity,service,contentprovider,broadcastreceiver四大组件.不同的intent可以使这些组件产生相应的动作,为这些组件之间提供了交互能力.那么这个“messaging obj

Android学习笔记—开发组件3

通知类组件 (1)Toast组件:一般出现在屏幕下方,黑色边框,显示一段时间自动消失,不会打断用户操作. 场景:下载完成.更新完成.充电结束.安装成功等 Toast.makeText(this,"下载完成",Toast.LENGTH_SHORT).show(); (2)Notification组件:状态栏上的通知 特性:具有全局效果的通知,时效性不强. 场景:短信.未接电话.下载等. //获取通知管理器NotificationManager对象 mNitificationManager

Android学习总结——Service组件

从Service的启动方式上,可以将Service分为Started Service和Bound Service.在使用Service时,要想系统能够找到此自定义Service,无论哪种类型,都需要在AndroidManifest.xml中声明: <service android:name=".MyService"> 一:StartService方式启动服务 Started Service相对比较简单,通过context.startService(Intent servic

Android基础——高级UI组件:选项卡

布局文件 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.c

Android学习笔记(30):选项卡TabHost

TabHost组件是可以在界面中存放多个选项卡的容器,选项卡大小与外部容器相同. TabWidget 组件就是TabHost的标题条,单击可以切换选项卡. TabSpec组件就是一个选项卡(Tab页面). TabHost的使用步骤如下: 1.在XML文件中定义一个TabHost组件,并在其中定义一个FrameLayout.在其中添加内容. 2.Activity应该继承自TabActivity. 3.调用TabActivity的getTabHost()方法获取TabHost对象. 4.通过TabH

Android的TabHost组件-android的学习之旅(四十)

TabHost简介 虽然,官方建议用Fagment取代TabHost,但是我们还是大概的介绍一下.TabHost是一种非常简单的组件,TabHost可以很方便的在窗口放置多个标签页,每一个标签页相当于获得了一个摆放位置. 注意 TabHost的内部需要两个组件一个是TabWidget和FrameLayout两个组件. 通话记录界面 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:andro

12.Android之Tabhost组件学习

TabHost是整个Tab的容器,TabHost的实现有两种方式: 第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.各个Tab中的内容在布局文件中定义就行了. 第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent. 1)继承TabActivity 如果加载该TabH