`

TabWidget/TabHost的两种使用方法

阅读更多
Android TabWidget/TabHost有两种使用方法:

第一种:使用系统自带写好的TabHost(及继承自TabActivity类)具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<LinearLayout android:id="@+id/tab1"
		android:layout_width="fill_parent" android:layout_height="fill_parent"
		androidrientation="vertical">
		<TextView android:id="@+id/TextView1"
			android:text="This is a tab1" android:layout_width="fill_parent"
			android:layout_height="wrap_content">
		</TextView>
	</LinearLayout>
	<LinearLayout android:id="@+id/tab2"
		android:layout_width="fill_parent" android:layout_height="fill_parent"
		androidrientation="vertical">
		<TextView android:id="@+id/TextView2"
			android:text="This is a tab2" android:layout_width="fill_parent"
			android:layout_height="wrap_content">
		</TextView>
	</LinearLayout>
	<LinearLayout android:id="@+id/tab3"
		android:layout_width="fill_parent" android:layout_height="fill_parent"
		androidrientation="vertical">
		<TextView android:id="@+id/TextView3"
			android:text="This is a tab3" android:layout_width="fill_parent"
			android:layout_height="wrap_content">
		</TextView>
	</LinearLayout>
</FrameLayout>

package com.Aina.Android;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;

public class Test_TabWidget extends TabActivity {
	/** Called when the activity is first created. */
	private TabHost tabHost;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.main);
		tabHost = this.getTabHost();
		LayoutInflater li = LayoutInflater.from(this);
		li.inflate(R.layout.main, tabHost.getTabContentView(), true);
		tabHost.addTab(tabHost.newTabSpec("Tab_1").setContent(R.id.tab1)
				.setIndicator("TAB1",
						this.getResources().getDrawable(R.drawable.img1)));
		tabHost.addTab(tabHost.newTabSpec("Tab_2").setContent(R.id.tab2)
				.setIndicator("TAB2",
						this.getResources().getDrawable(R.drawable.img2)));
		tabHost.addTab(tabHost.newTabSpec("Tab_3").setContent(R.id.tab3)
				.setIndicator("TAB3",
						this.getResources().getDrawable(R.drawable.img3)));
		tabHost.setCurrentTab(1);
//		tabHost.setBackgroundColor(Color.GRAY);
		tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {

			public void onTabChanged(String tabId) {
				Dialog dialog = new AlertDialog.Builder(Test_TabWidget.this)
						.setTitle("提示").setMessage(
								"选中了" + tabId + "选项卡").setIcon(R.drawable.icon).setPositiveButton("确定", new DialogInterface.OnClickListener(){

									public void onClick(DialogInterface dialog,
											int which) {
										// TODO Auto-generated method stub
										
									}
									
								}).create();
				dialog.show();

			}

		});
	}
}



第二种:就是定义我们自己的tabHost:不用继承TabActivity,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/TabHost01" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<LinearLayout android:layout_width="fill_parent"
		android:orientation="vertical" android:layout_height="fill_parent">
		<TabWidget android:id="@android:id/tabs"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content" />
		<FrameLayout android:id="@android:id/tabcontent"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent">
			<LinearLayout android:id="@+id/LinearLayout1"
				android:layout_width="fill_parent"
				android:layout_height="wrap_content">
				<TextView android:text="one"
					android:id="@+id/TextView01" android:layout_width="wrap_content"
					android:layout_height="wrap_content">
				</TextView>
			</LinearLayout>
			<LinearLayout android:id="@+id/LinearLayout2"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
				<TextView android:text="two"
					android:id="@+id/TextView02" android:layout_width="fill_parent"
					android:layout_height="wrap_content">
				</TextView>
			</LinearLayout>
			<LinearLayout android:id="@+id/LinearLayout3"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
				<TextView android:text="three"
					android:id="@+id/TextView03" android:layout_width="fill_parent"
					android:layout_height="wrap_content">
				</TextView>
			</LinearLayout>
		</FrameLayout>
	</LinearLayout>
</TabHost>

package com.Aina.Android;

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

public class Test_TabHost extends Activity {
	/** Called when the activity is first created. */
	private TabHost tabHost;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		try{
			tabHost = (TabHost) this.findViewById(R.id.TabHost01);
			tabHost.setup();
			
			tabHost.addTab(tabHost.newTabSpec("tab_1")
					.setContent(R.id.LinearLayout1)
					.setIndicator("TAB1",this.getResources().getDrawable(R.drawable.img1)));
			tabHost.addTab(tabHost.newTabSpec("tab_2")
					.setContent(R.id.LinearLayout2).setIndicator("TAB2",
							this.getResources().getDrawable(R.drawable.img2)));
			tabHost.addTab(tabHost.newTabSpec("tab_3")
					.setContent(R.id.LinearLayout3).setIndicator("TAB3",
							this.getResources().getDrawable(R.drawable.img3)));
			tabHost.setCurrentTab(1);
		}catch(Exception ex){
			ex.printStackTrace();
			Log.d("EXCEPTION", ex.getMessage());
		}

	}
}


注意:第二种方法时布局文件中的TabWidget的id必须定义为:android:id="@android:id/tabs",FrameLayout的id必须定义为:android:id="@android:id/tabcontent" 其它控件没有限制,否则报错。


【Android进阶】嵌套TabHost (TabHost中放TabHost,类似二级目录、二级树)
http://blog.csdn.net/feng88724/archive/2011/02/23/6203358.aspx
分享到:
评论

相关推荐

    TabHost的两种使用方式

    本篇文章将深入探讨TabHost的两种使用方式:XML布局和编程方式。 一、XML布局方式 1. 创建TabWidget:首先,在布局文件中创建一个TabWidget,它是TabHost中的标签视图。通过`android:id="@android:id/tabs"`来指定...

    Android TabHost组件使用方法详解

    总结来说,Android的TabHost组件提供了一种方便的方式来组织应用的多个功能模块,用户可以通过标签页轻松切换。在实际开发中,我们可以根据需求自定义标签页的样式、内容和交互,为用户提供更友好的界面体验。需要...

    TabHost两种实现方式

    这篇博客“TabHost两种实现方式”探讨了如何在Android应用中使用TabHost来构建多标签视图。下面我们将深入讨论这两种实现方式及其相关知识点。 首先,我们要理解TabHost的基本概念。TabHost是一个容器,它能容纳一...

    TabHost自定义样式 自定义TabWidget

    本篇文章将深入探讨如何自定义TabHost的样式,包括使用Activity对象作为内容和使用View对象作为内容两种方式。 首先,让我们了解TabHost的基本结构。TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是...

    TabHost的简单使用

    总结来说,TabHost是Android中构建多选项卡界面的一种方式,虽然现在有更现代的解决方案,但在理解Android历史和一些老项目中,掌握TabHost的使用仍然是必要的。通过TabHost和相关组件,开发者可以轻松地为用户提供...

    安卓 tabhost嵌套tabhost

    TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而FrameLayout则用来展示被选中选项卡的内容。通过TabSpec对象,我们可以设置每个选项卡的标签和关联的Activity或布局。 ```xml ...

    两种特殊Tabhost实现

    总结来说,本文介绍了如何在Android中实现两种特殊的TabHost,包括模仿网易新闻底部导航栏的FragmentTabHost实现以及自定义TabWidget的方法。通过这些知识,开发者可以创造出更具交互性和视觉吸引力的Android应用。

    两层tabwidget的使用

    本教程将深入探讨如何实现两层`TabWidget`的使用,即在一个`TabWidget`中嵌套另一个`TabWidget`,以便在子页面上也能够实现流畅的界面切换,提升用户体验。 首先,我们要理解`TabWidget`的基本用法。`TabWidget`是`...

    使用TabActivity简单实现TabHost显示

    在Android开发中,TabHost和TabWidget是两个关键组件,用于创建具有标签切换功能的界面。TabHost可以理解为一个容器,它包含了多个TabWidget(标签)和一个FrameLayout(内容区域)。TabWidget用于显示各个标签,...

    Android入门第十一篇之TabHost,TabWidget.docx

    例如,通过`TabHost.setup()`方法初始化TabHost,然后使用`TabHost.newTabSpec()`创建TabSpec,设置标签和Intent,最后调用`TabHost.addTab()`将TabSpec添加到TabHost中。同时,可能还会设置监听器以响应Tab的切换...

    仿新浪微博TabHost菜单

    2. 初始化TabWidget和FrameLayout:在TabHost中添加TabWidget和FrameLayout,这两个组件是TabHost的基础。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); TabWidget ...

    详解Android TabHost的多种实现方法 附源码下载

    本文将详细介绍两种不依赖于`TabActivity`实现TabHost的方法,并提供源码供参考。 ### 方法一:不继承`TabActivity` 1. **布局文件**:在XML布局文件中,需要包含一个`TabHost`,一个`TabWidget`用于显示标签,...

    Android TabHost控件讲解

    下面将详细讲解TabHost的使用方法及其相关知识点。 首先,了解TabHost的基本结构。TabHost包含两个主要部分:TabWidget和FrameLayout。TabWidget用于显示和管理各个标签,而FrameLayout则承载被选中的标签内容。在...

    tabhost使用方法

    下面将详细介绍TabHost的使用方法,以及如何通过它来构建用户友好的多页面应用。 1. TabHost的基本结构: TabHost主要由两个组件组成:TabWidget和FrameLayout。TabWidget显示各个标签,而FrameLayout用于展示被...

    实例讲解Android应用开发中TabHost的使用要点

    TabHost通常与TabWidget结合使用,为用户提供一种便捷的方式来切换不同的视图。本文将通过实例详细讲解如何在Android应用中使用TabHost。 首先,我们要理解TabHost和TabWidget的关系。TabHost是一个容器,它包含了...

    android TabHost自定义选项卡

    一个TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而FrameLayout用于承载每个选项卡的内容。开发者可以通过设置TabSpec来定义每个选项卡的内容和标签。 1. 创建TabHost: ...

    tabHost实现底部菜单

    `TabHost`包含两个主要部分:`TabWidget`(显示标签)和`FrameLayout`(显示内容)。`TabHost`的工作原理是,每个标签对应一个`Intent`,当用户点击某个标签时,对应的`Intent`会被启动,显示相应的内容。 首先,...

    android TabHost 底部显示

    TabHost通常结合TabWidget和FrameLayout一起使用,TabWidget用于显示和管理各个Tab,而FrameLayout则用来承载每个Tab对应的内容。 二、实现步骤 1. 创建布局资源 首先,我们需要创建一个XML布局文件,包含TabHost...

    android通过tabhost实现标签页

    `TabHost`通常包含两个主要组件:`TabWidget`和`FrameLayout`。`TabWidget`用于显示和管理各个`Tab`,而`FrameLayout`则用来展示当前选中的`Tab`内容。 ### 二、TabHost的使用步骤 1. **初始化TabHost** 首先,在...

Global site tag (gtag.js) - Google Analytics