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" 其它控件没有限制,否则报错。
分享到:
相关推荐
总之,`TabWidget` 和 `TabHost` 是构建多标签界面的经典方式,虽然现代Android开发更倾向于使用 `TabLayout` 和 `Fragment`,但对于了解Android的历史和向后兼容性而言,理解这些组件仍然非常重要。通过掌握这些...
在Android开发中,TabWidget和TabHost是用于创建具有多个选项卡界面的常用组件。本文将深入探讨如何自定义TabWidget的TabHost,以便为用户提供更丰富的交互体验。首先,让我们了解一下这两个组件的基本概念。 ...
在Android开发中,`TabHost`和`TabWidget`是构建多标签界面的重要组件,用于创建具有选项卡式导航的应用程序。`TabHost`作为容器,管理着`TabWidget`和一个`FrameLayout`,而`TabWidget`则是展示选项卡的控件。 1. ...
`TabHost`、`TabWidget`和`FrameLayout`是Android SDK提供的一种原生方式,用于构建这种多标签页的应用界面。下面我们将详细探讨如何利用这些组件来实现底部菜单功能。 `TabHost`是Android中的一个容器类,它负责...
在Android开发中,`TabHost`和`TabWidget`是两个关键组件,它们常用于创建具有多标签(或称为卡片)界面的应用。这样的设计允许用户通过点击不同的标签来浏览和切换不同的视图或功能模块。下面我们将深入探讨这两个...
本文将深入讲解如何在Android中使用TabHost,并通过一个简单实例来演示其基本用法。 首先,我们需要了解TabHost的基本结构。TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget负责显示和管理各个Tab...
记得在项目中导入所需的依赖库,例如`androidx.appcompat.widget.TabHost`,这取决于你的项目所使用的Android支持库版本。 以上就是关于TabHost的详细使用方法,希望对初学者在理解并实现选项卡界面时有所帮助。...
本篇文章将详细介绍如何在Android项目中使用TabHost,以及它的工作原理。 首先,我们需要理解TabHost的基本结构。TabHost是一个容器,它包含两个主要组件:TabWidget和FrameLayout。TabWidget用于显示和管理各个...
在Android开发中,TabHost组件是一个非常实用的控件,用于创建带有标签页的应用界面,让用户可以在多个功能之间轻松切换。本文将详细讲解如何使用TabHost,并通过实例代码进行演示。 首先,TabHost的核心组成部分...
本Demo主要展示了如何在Android应用中使用TabHost来构建一个多标签的用户界面。下面我们将深入探讨TabHost的使用方法以及涉及到的相关知识点。 1. **TabHost的基本概念** TabHost是一个容器,它可以在一个窗口内...
本文将详细讲解如何在Android Studio中使用TabHost进行布局设计,以及如何自定义TabHost的各项属性,如字体颜色、大小等。 一、TabHost的基本概念 TabHost是Android SDK提供的一种布局容器,可以容纳一个或多个...
这篇博客文章“android总结之TabHost”深入探讨了如何在Android应用中使用TabHost进行界面设计。TabHost提供了在同一个屏幕上展示多个功能区域的能力,使得用户可以方便地切换不同内容。 首先,我们需要理解TabHost...
通过这个"myTabTest"示例,我们可以学习到如何使用TabHost来创建一个多标签页的Android应用。值得注意的是,随着Android版本的更新,现在更推荐使用`ViewPager`配合`TabLayout`来实现更灵活、更现代的标签页导航。...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,让用户能够通过...通过理解和实践这个示例,开发者可以更好地掌握Android TabHost的使用,以及如何在实际项目中灵活运用,提升用户体验。
本文将深入讲解如何在Android应用程序中有效地使用TabHost。 一、TabHost概述 TabHost是Android SDK中的一个容器类,用于管理一组TabWidget(标签)和一个FrameLayout(帧布局),在这个帧布局中,我们可以切换显示...
本篇文章将深入探讨如何使用TabHost源码在Android应用中实现多标签功能。 首先,TabHost是一个容器,它能够承载多个TabWidget(标签)和一个FrameLayout(内容区域)。当我们点击TabWidget中的不同标签时,...
在XML布局文件中,你可以使用`<TabHost>`标签来声明TabHost,并在其中包含`<TabWidget>`和`<FrameLayout>`。然后,通过`<TabSpec>`标签来定义每个标签,每个`<TabSpec>`包含一个`<intent>`标签,指定标签内容的...
在Android开发中,TabHost是实现标签栏切换界面的一个重要组件。TabHost允许开发者创建一个包含多个Tab的界面,每个Tab都可以关联到不同的活动(Activity)或者帧布局(FrameLayout)。下面将详细介绍TabHost的使用...
本教程将深入讲解如何使用TabHost在Android应用中实现自定义的页签页面。 首先,我们需要理解TabHost的基本结构。TabHost包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示页签的地方,而FrameLayout...