TabHost在很多应用都会使用到,有时候在TabHost添加的Tab中设置view不能满足需求,因为在view中添加如PreferenceActivity相当困难.
之前在一个应用中需要实现使用TabHost中在多个Tab切换不同的Activity.一个是日志列表(ListActivity),一个是应用设置页面( PreferenceActivity )
先上效果图
上图是日志列表页面,是ListActivity
上图是设置页面,是一般的PreferenceActivity
开发流程 :
1, 编写不同的Activity,用于在TabHost中点击不同的Tab时进行切换(以下是两个例子,因为不是该博文的主要内容所以省略)
1-1, 编写LogActivity,该类是ListActivity,用于显示日志内容
1-2, 编写SettingActivity,该类是PreferenceActivity,应用的设置页面,编写方式与PreferenceActivity一样.
2, 编写主页面(MainActivity),该类是应用的入口类,在该类定义TabHost并添加相应的Activity.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// 该类需要继承ActivityGroup
public class MainActivity extends ActivityGroup {
private TabHost mTabHost;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
// 设置TabHost
initTabs();
}
private void initTabs() {
mTabHost = (TabHost) findViewById(R.id.tabhost);
mTabHost.setup(this.getLocalActivityManager());
// 添加日志列表的tab,注意下面的setContent中的代码.是这个需求实现的关键
mTabHost.addTab(mTabHost.newTabSpec("tab_log")
.setIndicator("日志",getResources().getDrawable(R.drawable.ic_tab_log))
.setContent(new Intent(this, LogActivity.class)));
// 添加应用设置的tab,注意下面的setContent中的代码.是这个需求实现的关键
mTabHost.addTab(mTabHost.newTabSpec("tab_setting")
.setIndicator("设置",getResources().getDrawable(R.drawable.ic_tab_settings))
.setContent(new Intent(this, SettingActivity.class)));
mTabHost.setCurrentTab(1);
}
}
|
3, 编写main.xml,MainActivity的layout的xml配置文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
xmlns:app="http://schemas.android.com/apk/res/rbase.app.nowscore"
android:layout_height="fill_parent"
android:layout_above="@+id/adLayout">
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<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>
</TabHost>
</LinearLayout>
</RelativeLayout>
补充:
当在不同的Tab中按下menu按钮,会以当前的Activity为准,即在SettingActivity时按下menu按钮后会触发SettingActivity的事件,不是主页面的事件.
来源 : http://www.r-base.net/archives/235
分享到:
相关推荐
首先,`TabHost` 是 Android SDK 提供的一个容器,它允许我们在同一个活动中展示多个 `Tab`,每个 `Tab` 对应一个不同的 `Activity` 或 `Fragment`。这样用户可以通过点击 `Tab` 在不同的功能之间切换,提高用户体验...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,让用户能够通过不同的标签页浏览和切换不同的功能或内容。本示例是关于如何在Android中实现嵌套的TabHost,即两个层级的TabHost,类似...
在Android应用开发中,TabHost组件是一个非常常用的工具,它用于创建带有标签页的应用界面,让用户可以在多个视图间切换。本教程将详细介绍如何自定义TabHost组件使其显示在屏幕底部,并实现通过滑动切换页面的功能...
TabHost是Android提供的一种用于实现标签页切换的组件,它可以将多个不同的Activity或者Fragment封装到不同的Tab下,用户可以通过点击Tab标签在这些页面间切换。 1. **初始化TabHost**:首先在布局文件中定义...
在Android应用开发中,创建一个具有标签切换功能的界面是一种常见的设计模式,它能帮助用户在不同的内容区域之间轻松导航。本教程将详细介绍如何使用TabHost和Fragment来实现这一功能。 首先,`TabHost`是Android ...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以承载不同的Activity或View。在这个例子中,我们将会深入理解如何使用TabHost、ActivityGroup以及源码分析,来...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的用户界面,使得用户可以在不同的功能之间轻松切换。本文将详细讲解如何在Android Studio中使用TabHost进行布局设计,以及如何自定义TabHost的...
在Android开发中,`TabHost`和`TabWidget`是两个关键组件,它们常用于创建具有多标签(或称为卡片)界面的应用。这样的设计允许用户通过点击不同的标签来浏览和切换不同的视图或功能模块。下面我们将深入探讨这两个...
在Android开发中,TabHost是一个非常重要的组件,它允许我们创建具有多个标签(Tab)的界面,每个标签对应一个不同的活动(Activity)或视图(View)。本文将深入讲解如何在Android应用程序中有效地使用TabHost。 ...
在TabHost中,每个Tab通常会对应一个独立的Activity,这样当用户切换Tab时,Android系统会启动或恢复相应的Activity,呈现出对应的功能界面。 **SlidingMenu**: SlidingMenu是一个Android库项目,用于实现侧滑菜单...
在早期的Android版本中,TabHost与Activity紧密相连,但在Android 3.0(API级别11)引入Fragment后,我们可以通过Fragment来实现更灵活的TabHost效果。 在Android中,Fragment的使用使得UI的模块化更为明显,每个...
在Android应用开发中,底部TabHost是一个常见的设计模式,它允许用户通过底部的标签栏轻松地在多个Activity之间切换,从而提升用户体验。本教程将详细讲解如何实现一个自定义的底部TabHost,使得Activity能够在底部...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的界面,使得用户可以在不同的功能之间轻松切换。本篇文章将详细讲解如何在Android中使用TabHost,包括其基本概念、设置过程以及实现Activity...
在Android开发中,`TabHost` 是一个非常重要的组件,用于实现多标签界面,它允许开发者在一个Activity中创建多个Tab,每个Tab对应不同的内容或功能。`TabHost` 结合`TabWidget` 和 `FrameLayout` 一起工作,提供了一...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签页可以关联一个单独的活动(Activity)或者帧布局(FrameLayout)。本实例演示了如何在Android应用程序中自定义TabHost,以...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个小部件或活动的多页视图。TabHost通常与TabWidget和FrameLayout一起使用,为用户提供了一个可以在多个标签之间切换的界面,既可以通过点击标签进行...
在Android开发中,TabHost是实现标签栏切换页面的一个关键组件。TabHost允许开发者创建具有多个标签页的应用,每个标签页可以对应一个不同的活动(Activity)或者帧布局(FrameLayout)。下面将详细介绍如何使用...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建多标签的用户界面,使得用户可以在不同的功能之间轻松切换。TabHost结合TabWidget(标签)和FrameLayout(内容区域)来实现这一功能。让我们深入了解...
在这个例子中,每个Tab可能会对应一个Activity,当用户点击不同的标签时,Activity会根据TabHost的指示进行切换,展示不同的内容。Activity可以通过`Intent`来启动、切换,同时可以处理用户事件并管理生命周期。 **...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以展示不同的内容或活动(Activity)。本教程将详细介绍如何使用TabHost,特别适合初学者和教学场景,例如构建一个模拟...