`
hotpro
  • 浏览: 21520 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Android TabActivity Essentials

阅读更多
以Tab的形式显示,在各个平台上都很常见,这个UI 元素的应用很广泛。
TabActivity的用法示例在APIDemo里面都能找到。这里不介绍了,本文主要讲下它的原理和扩展
TabActivity是个比较有意思的东西。TabActivity是继承自ActivityGroup的,Android里面很少涉及ActivityGroup的介绍,借此也可以研究下ActivityGroup.

1. 首先看TabActivity分上下两个部分



下面看Code,可以看到
TabActivity有几个关键的东西
TabActivity -- ActivityGroup
TabHost     -- FrameLayout
TabWidget  -- LinearLayout

TabActivity ---- TabHost ---- TabWidget+mTabContent(FrameLayout)
TabActivity里面有一个TabHost
TabHost里面有TabWidget+mTabContent

TabWidget就是上面的部分
mTabContent就是下面的部分

2. 先举一个简单的例子,就是显示上面那幅图的例子。每一个Tab就是一个Text
public class Tabs1 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TabHost mTabHost = getTabHost();

        LayoutInflater.from(this).inflate(R.layout.tabs1,
                mTabHost.getTabContentView(), true);

        mTabHost.addTab(mTabHost.newTabSpec("tab1_tag").setIndicator(
                "tab1_title").setContent(R.id.tab1)
                );

        mTabHost.addTab(mTabHost.newTabSpec("tab2_tag").setIndicator(
                "tab2_title").setContent(R.id.tab2)
                );

        mTabHost.addTab(mTabHost.newTabSpec("tab3_tag").setIndicator(
                "tab3_title").setContent(R.id.tab3)
                );
    }

}


<?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">
	<TextView android:id="@+id/tab1" android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:text="@string/tabs_1_tab_1"
		android:background="@color/solid_blue" />

	<TextView android:id="@+id/tab2" android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:text="@string/tabs_1_tab_2"
		android:background="@color/solid_green" />

	<TextView android:id="@+id/tab3" android:layout_width="fill_parent"
		android:layout_height="fill_parent" android:text="@string/tabs_1_tab_3"
		android:background="@color/solid_red" />

</FrameLayout>


发现TabHost要讲的东西实在太多。
重点讲下TabWidget和mTabContent吧。
大家都知道TabActivity的显示很灵活。
上面的TabWidget可以是1. String    2. String + Icon    3. 自定义的View
下面的mTabContent可以是1.用resId指定的View(如示例)    2.用TabContentFactory动态生成的View    3.还可以显示指定intent叫起的Activity
它是为什么这么灵活呢?
就是因为在TabHost里用Strategy Pattern-策略模式来实现这两个东西的显示。
如下
    /**
     * Specifies what you do to create a tab indicator.
     */
    private static interface IndicatorStrategy {

        /**
         * Return the view for the indicator.
         */
        View createIndicatorView();
    }

    /**
     * Specifies what you do to manage the tab content.
     */
    private static interface ContentStrategy {

        /**
         * Return the content view.  The view should may be cached locally.
         */
        View getContentView();

        /**
         * Perhaps do something when the tab associated with this content has
         * been closed (i.e make it invisible, or remove it).
         */
        void tabClosed();
    }


这里还要提到另外一个东西。
private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
存着TabSpec就是在addTab()时传入的东西,一个就是一个Tab。
TabSpec里面就有上面的两个Strategy.

在显示的时候,就会从这个List中取TabSpec,然后根据不同的策略来显示内容。

留下一个小问题。
有没有注意当我们去按当前选中的Tab的时候,TabWidget下面的一个长条也会跟选中的Tab一起高亮,好像它们是连在一起的(如下图),这是怎么回事呢?


  • 大小: 19.2 KB
  • 大小: 19.2 KB
1
1
分享到:
评论
2 楼 hotpro 2010-10-21  
yuchttp 写道
我在里面加了几个LISTVIEW 但都不能响应onItemClick事件,博主遇到过这种情况吗?

能把问题详细描述下吗?
1 楼 yuchttp 2010-10-18  
我在里面加了几个LISTVIEW 但都不能响应onItemClick事件,博主遇到过这种情况吗?

相关推荐

    Android TabActivity实现多页显示效果

    在Android开发中,TabActivity是实现多页面切换和展示效果的一种常见方式。它允许用户通过底部的标签栏轻松地在不同的界面之间切换,提供了一种直观的用户交互体验。本教程将详细介绍如何使用TabActivity创建一个多...

    Android TabActivity 开发案例

    Android TabActivity 开发案例,本案例着重介绍用TabActivity 开发安卓分页架构

    android tabactivity+listview+边框圆角+相机调用

    在Android开发中,TabActivity和ListView是常见的组件,它们用于构建多页面的用户界面和数据展示。同时,为UI元素添加圆角边框以及调用相机功能是提升用户体验的重要环节。下面将详细介绍这些知识点。 首先,`...

    使用 TabActivity 实现滑动翻页(带动画)和标签置底

    在Android开发中,`TabActivity`是早期版本中用于实现标签栏切换的一种方式,它可以创建一个带有多个选项卡的活动,每个选项卡对应一个单独的`Activity`或`Fragment`。然而,`TabActivity`在Android API Level 13...

    android 如何在tabactivity中嵌套tab

    在Android开发中,TabActivity是早期版本用于实现标签页切换的一种方式。然而,随着Android SDK的更新,TabActivity已被废弃,现在推荐使用Fragment和ViewPager来实现类似的功能。但为了理解这个旧的用法,我们将...

    TabActivity替代

    看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的...

    Android开发之TabActivity用法实例详解

    本文实例讲述了Android开发之TabActivity用法。分享给大家供大家参考,具体如下: 一.简介 TabActivity继承自Activity,目的是让同一界面容纳更多的内容。TabActivity实现标签页的功能,通过导航栏对各个页面进行管理...

    Android_TabActivity.rar_Tabú_android tab_android的Fragment

    在Android应用开发中,TabActivity是用于创建带有多个选项卡的界面的一种方式,它允许用户在不同的内容之间轻松切换。然而,随着Android SDK的发展,TabActivity已经被弃用,取而代之的是使用 Fragments 和 ...

    Android学习4——ListActivity,TabActivity

    在Android开发中,ListActivity和TabActivity是两个非常重要的组件,它们帮助开发者构建用户界面,提供数据展示和交互的功能。本文将深入探讨这两个组件的概念、用法以及它们在实际项目中的应用。 首先,我们来了解...

    android demo,TabActivity的实现源代码。

    在Android开发中,TabActivity是早期版本中用来创建带有选项卡切换界面的一种方式。这个"android demo,TabActivity的实现源代码"是一个示例项目,它展示了如何在Android应用中集成和管理TabHost来实现多标签功能。...

    TabActivity笔记

    在Android开发中,`TabActivity`是早期版本中用于实现底部标签栏切换界面的一种方式。这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`...

    android 自定义TabActivity的实例方法

    在Android应用开发中,TabActivity是用于创建带有标签页的应用界面的一种方式,它允许用户在不同的视图之间切换。然而,系统默认的TabActivity样式可能无法满足所有开发者的设计需求,因此自定义TabActivity就显得尤...

    切换卡TabActivity的使用

    在Android开发中,"切换卡"通常指的是TabActivity或者使用Fragment和TabLayout实现的界面切换效果,这是一种常见的用户界面设计,用于展示多个相关的视图或功能。本篇将详细讲解如何在Android应用中使用TabActivity...

    ActivityGroup 代替TabActivity的用法

    Android 开发中,TabActivity 已经被废除,而使用 ActivityGroup 来代替 TabActivity,可以更加自由灵活,少很多限制和依赖。ActivityGroup 是 Google 提供的一个非常优秀的 API,但它需要做稍微复杂的重写才能用...

    TabActivity之间跳转、传值

    在Android应用开发中,`TabActivity`是一种常见的用于创建多标签界面的设计模式。它允许用户在不同的标签之间切换,每个标签通常对应一个独立的功能模块。然而,随着Android SDK的更新,`TabActivity`已被废弃,...

    TabActivity

    在Android开发中,`TabActivity`是早期用来创建带有选项卡式导航的应用界面的一个关键组件。这个组件允许用户通过在不同的Tab之间切换来浏览多个视图或者内容区域。`TabActivity`结合了`TabHost`和`TabWidget`,使得...

    TabActivity 实现滑动翻页源码

    在Android开发中,`TabActivity`是用于创建带有选项卡导航的应用程序的一种方式。它允许用户通过滑动或点击选项卡在多个视图之间切换,提供了丰富的用户体验。本篇文章将详细解析如何使用`TabActivity`实现滑动翻页...

    TabActivity的使用

    在Android开发中,`TabActivity`是早期API版本中用于实现多标签页切换的一种方式。本文将深入探讨`TabActivity`的使用,以及如何通过源码理解和应用它,同时也会介绍一些相关的工具来辅助开发。 `TabHost`是`...

    android利用fragment实现TabActivityd的效果

    TabActivity曾是Android早期版本中实现标签页切换的主要方式,但随着Android API的发展,TabActivity已被废弃。现在,我们通常使用Fragment和TabHost或者PagerTabStrip等组件来实现类似的功能。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics