`
熊滔爱孟涛静
  • 浏览: 124653 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TabHost

阅读更多

Android TabWidget/TabHost有两种使用方法:

第一种:使用系统自带写好的TabHost(及继承自TabActivity类)具体代码如下:

Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">   
  5.     <LinearLayout android:id="@+id/tab1"  
  6.         android:layout_width="fill_parent" android:layout_height="fill_parent"  
  7.         androidrientation="vertical">   
  8.         <TextView android:id="@+id/TextView1"  
  9.             android:text="This is a tab1" android:layout_width="fill_parent"  
  10.             android:layout_height="wrap_content">   
  11.         </TextView>   
  12.     </LinearLayout>   
  13.     <LinearLayout android:id="@+id/tab2"  
  14.         android:layout_width="fill_parent" android:layout_height="fill_parent"  
  15.         androidrientation="vertical">   
  16.         <TextView android:id="@+id/TextView2"  
  17.             android:text="This is a tab2" android:layout_width="fill_parent"  
  18.             android:layout_height="wrap_content">   
  19.         </TextView>   
  20.     </LinearLayout>   
  21.     <LinearLayout android:id="@+id/tab3"  
  22.         android:layout_width="fill_parent" android:layout_height="fill_parent"  
  23.         androidrientation="vertical">   
  24.         <TextView android:id="@+id/TextView3"  
  25.             android:text="This is a tab3" android:layout_width="fill_parent"  
  26.             android:layout_height="wrap_content">   
  27.         </TextView>   
  28.     </LinearLayout>   
  29. </FrameLayout>  
<?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>


Java代码 复制代码
  1. package com.Aina.Android;   
  2.   
  3. import android.app.AlertDialog;   
  4. import android.app.Dialog;   
  5. import android.app.TabActivity;   
  6. import android.content.DialogInterface;   
  7. import android.os.Bundle;   
  8. import android.view.LayoutInflater;   
  9. import android.widget.TabHost;   
  10.   
  11. public class Test_TabWidget extends TabActivity {   
  12.     /** Called when the activity is first created. */  
  13.     private TabHost tabHost;   
  14.   
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {   
  17.         super.onCreate(savedInstanceState);   
  18.         // setContentView(R.layout.main);   
  19.         tabHost = this.getTabHost();   
  20.         LayoutInflater li = LayoutInflater.from(this);   
  21.         li.inflate(R.layout.main, tabHost.getTabContentView(), true);   
  22.         tabHost.addTab(tabHost.newTabSpec("Tab_1").setContent(R.id.tab1)   
  23.                 .setIndicator("TAB1",   
  24.                         this.getResources().getDrawable(R.drawable.img1)));   
  25.         tabHost.addTab(tabHost.newTabSpec("Tab_2").setContent(R.id.tab2)   
  26.                 .setIndicator("TAB2",   
  27.                         this.getResources().getDrawable(R.drawable.img2)));   
  28.         tabHost.addTab(tabHost.newTabSpec("Tab_3").setContent(R.id.tab3)   
  29.                 .setIndicator("TAB3",   
  30.                         this.getResources().getDrawable(R.drawable.img3)));   
  31.         tabHost.setCurrentTab(1);   
  32. //      tabHost.setBackgroundColor(Color.GRAY);   
  33.         tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {   
  34.   
  35.             public void onTabChanged(String tabId) {   
  36.                 Dialog dialog = new AlertDialog.Builder(Test_TabWidget.this)   
  37.                         .setTitle("提示").setMessage(   
  38.                                 "选中了" + tabId + "选项卡").setIcon(R.drawable.icon).setPositiveButton("确定"new DialogInterface.OnClickListener(){   
  39.   
  40.                                     public void onClick(DialogInterface dialog,   
  41.                                             int which) {   
  42.                                         // TODO Auto-generated method stub   
  43.                                            
  44.                                     }   
  45.                                        
  46.                                 }).create();   
  47.                 dialog.show();   
  48.   
  49.             }   
  50.   
  51.         });   
  52.     }   
  53. }  
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,具体代码如下:

Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/TabHost01" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">   
  5.     <LinearLayout android:layout_width="fill_parent"  
  6.         android:orientation="vertical" android:layout_height="fill_parent">   
  7.         <TabWidget android:id="@android:id/tabs"  
  8.             android:layout_width="fill_parent"  
  9.             android:layout_height="wrap_content" />   
  10.         <FrameLayout android:id="@android:id/tabcontent"  
  11.             android:layout_width="fill_parent"  
  12.             android:layout_height="fill_parent">   
  13.             <LinearLayout android:id="@+id/LinearLayout1"  
  14.                 android:layout_width="fill_parent"  
  15.                 android:layout_height="wrap_content">   
  16.                 <TextView android:text="one"  
  17.                     android:id="@+id/TextView01" android:layout_width="wrap_content"  
  18.                     android:layout_height="wrap_content">   
  19.                 </TextView>   
  20.             </LinearLayout>   
  21.             <LinearLayout android:id="@+id/LinearLayout2"  
  22.                 android:layout_width="wrap_content"  
  23.                 android:layout_height="wrap_content">   
  24.                 <TextView android:text="two"  
  25.                     android:id="@+id/TextView02" android:layout_width="fill_parent"  
  26.                     android:layout_height="wrap_content">   
  27.                 </TextView>   
  28.             </LinearLayout>   
  29.             <LinearLayout android:id="@+id/LinearLayout3"  
  30.                 android:layout_width="wrap_content"  
  31.                 android:layout_height="wrap_content">   
  32.                 <TextView android:text="three"  
  33.                     android:id="@+id/TextView03" android:layout_width="fill_parent"  
  34.                     android:layout_height="wrap_content">   
  35.                 </TextView>   
  36.             </LinearLayout>   
  37.         </FrameLayout>   
  38.     </LinearLayout>   
  39. </TabHost>  
<?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>


Java代码 复制代码
  1. package com.Aina.Android;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.util.Log;   
  6. import android.view.LayoutInflater;   
  7. import android.widget.TabHost;   
  8.   
  9. public class Test_TabHost extends Activity {   
  10.     /** Called when the activity is first created. */  
  11.     private TabHost tabHost;   
  12.   
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {   
  15.         super.onCreate(savedInstanceState);   
  16.         setContentView(R.layout.main);   
  17.         try{   
  18.             tabHost = (TabHost) this.findViewById(R.id.TabHost01);   
  19.             tabHost.setup();   
  20.                
  21.             tabHost.addTab(tabHost.newTabSpec("tab_1")   
  22.                     .setContent(R.id.LinearLayout1)   
  23.                     .setIndicator("TAB1",this.getResources().getDrawable(R.drawable.img1)));   
  24.             tabHost.addTab(tabHost.newTabSpec("tab_2")   
  25.                     .setContent(R.id.LinearLayout2).setIndicator("TAB2",   
  26.                             this.getResources().getDrawable(R.drawable.img2)));   
  27.             tabHost.addTab(tabHost.newTabSpec("tab_3")   
  28.                     .setContent(R.id.LinearLayout3).setIndicator("TAB3",   
  29.                             this.getResources().getDrawable(R.drawable.img3)));   
  30.             tabHost.setCurrentTab(1);   
  31.         }catch(Exception ex){   
  32.             ex.printStackTrace();   
  33.             Log.d("EXCEPTION", ex.getMessage());   
  34.         }   
  35.   
  36.     }   
  37. }  
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" 其它控件没有限制,否则报错。

分享到:
评论
1 楼 gf_crazy 2011-09-27  

刚好找第二种,其他地方全是第一种。

相关推荐

    TabHost的各种实现方式

    在Android开发中,TabHost是一个重要的组件,它用于创建具有底部导航栏的应用界面,通常包含多个Tab,每个Tab对应一个不同的活动(Activity)或者视图(View)。本篇文章将深入探讨TabHost的各种实现方式,帮助...

    TabHost的使用方法

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以展示不同的内容或活动(Activity)。本教程将详细介绍如何使用TabHost,特别适合初学者和教学场景,例如构建一个模拟...

    TabHost中填充自定义ListView

    在Android开发中,`TabHost` 是一个非常重要的组件,用于实现多标签页面的切换,而将自定义的`ListView`填充到`TabHost`中则可以构建出复杂的交互界面。下面我们将详细探讨如何实现这一功能。 首先,我们需要了解`...

    TabHost两种实现方式

    在Android开发中,TabHost是一个重要的组件,用于创建带有可切换标签的用户界面。这篇博客“TabHost两种实现方式”探讨了如何在Android应用中使用TabHost来构建多标签视图。下面我们将深入讨论这两种实现方式及其...

    安卓 tabhost嵌套tabhost

    当我们提到“安卓 TabHost 嵌套 TabHost”,这意味着在一个TabHost内,我们还要再创建一个TabHost,形成一个多层选项卡的结构,以提供更复杂的导航体验。 首先,我们来理解基本的TabHost用法。TabHost通常由两部分...

    Android 嵌套TabHost示例

    在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,让用户能够通过不同的标签页浏览和切换不同的功能或内容。本示例是关于如何在Android中实现嵌套的TabHost,即两个层级的TabHost,类似...

    tabhost标签页面简单实现

    在Android开发中,`TabHost`是一个非常重要的组件,它用于创建具有标签栏的多页面布局,用户可以通过点击不同的标签来切换不同的页面。这个“tabhost标签页面简单实现”的示例是一个初学者在学习Android时可能会遇到...

    TabHost+ViewPager实现滑动tabhost

    在Android开发中,TabHost和ViewPager是两种常用的组件,它们可以结合起来创建出具有滑动切换效果的界面。本文将深入探讨如何使用TabHost与ViewPager来实现这一功能,并提供相关的源码解析。 首先,TabHost是...

    andorid中TabHost的使用

    在Android开发中,TabHost是一个非常重要的组件,它允许我们创建具有多个标签(Tab)的界面,每个标签对应一个不同的活动(Activity)或视图(View)。本文将深入讲解如何在Android应用程序中有效地使用TabHost。 ...

    ViewPager和Tabhost结合,可滑动的tabhost

    在Android应用开发中,`ViewPager` 和 `TabHost` 是两个非常重要的组件,它们分别用于实现页面滑动和标签导航。本示例“ViewPager和Tabhost结合,可滑动的tabhost”展示了如何将这两个组件有效地结合起来,创建一个...

    tabhost单例模式小例子

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签页可以关联到不同的Activity或View。本示例是关于如何使用TabHost实现单例模式的小例子,旨在帮助开发者理解如何在TabHost...

    Android TabHost组件使用方法详解

    在Android开发中,TabHost组件是一个非常实用的控件,用于创建带有标签页的应用界面,让用户可以在多个功能之间轻松切换。本文将详细讲解如何使用TabHost,并通过实例代码进行演示。 首先,TabHost的核心组成部分...

    TabHost标签

    在Android开发中,`TabHost`是一个非常重要的组件,它用于创建具有标签栏的界面,让用户可以通过不同的标签在多个视图之间切换。`TabHost`是Android提供的一个容器,可以容纳多个`TabWidget`(标签)和一个`...

    tabHost滑动切换选项卡 tabHost ViewPager

    在Android应用开发中,TabHost和ViewPager是两个非常重要的组件,它们可以用来创建用户友好的、多页面的交互式界面。TabHost通常用于创建带有标签的界面,而ViewPager则允许用户通过滑动来切换不同的页面。这个名为...

    TabHost的简单使用

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以展示不同的内容或活动(Activity)。TabHost结合TabWidget和FrameLayout工作,TabWidget用于显示选项卡,而...

    解决TabHost下面白线

    在Android开发中,TabHost是一个常用的组件,用于实现多页面的切换效果,通常与TabWidget和FrameLayout一起使用,创建类似手机应用底部导航栏的布局。然而,在实际使用过程中,开发者经常会遇到一个问题:TabHost...

    android TabHost(标签)的使用

    在Android开发中,TabHost是实现标签栏切换界面的一个关键组件。TabHost允许开发者创建一个具有多个Tab的界面,每个Tab都可以关联到不同的布局或活动(Activity),为用户提供直观的多视图导航体验。本文将深入讲解...

    TabHost和ViewPage源码

    在Android开发中,`TabHost`和`ViewPager`是两种常用的界面组件,它们用于构建具有多个标签页的应用界面。下面将详细介绍这两个组件的工作原理、使用方法以及如何将它们结合使用。 `TabHost`是Android SDK提供的一...

    android Tabhost使用Demo

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签页可以承载不同的活动(Activity)或视图。本Demo主要展示了如何在Android应用中使用TabHost来构建一个多标签的用户界面。...

Global site tag (gtag.js) - Google Analytics