TabActivity
首先Android里面有个名为TabActivity来给我们方便使用。其中有以下可以关注的函数:
public TabHost getTabHost ()
获得当前TabActivity的TabHost
public TabWidget getTabWidget ()
获得当前TabActivity
的TabWidget
public void setDefaultTab (String tag)
这两个函数很易懂,
就是设置默认的Tab
public void setDefaultTab (int index)
通过tab名——tag或者index(从0开始)
protected void onRestoreInstanceState (Bundle state)
这
两个函数的介绍可以
protected void onSaveInstanceState (Bundle outState)
参考 Activity的生命周期
TabHost
那么我们要用到的Tab载体是TabHost,需要从TabActivity.getTabHost获取。
现在看看TabHost类,它有3个内嵌类:1个类TabHost.TabSpec,2个接口
TabHost.TabContentFactory和TabHost.OnTabChangeListener。后面会介绍这些类和接口。
TabHost类的一些函数:
public void addTab (TabHost.TabSpec tabSpec)
添加
tab,参数TabHost.TabSpec通过下面的函数返回得到
public TabHost.TabSpec newTabSpec (String tag)
创
建TabHost.TabSpec
public void clearAllTabs ()
remove所有的Tabs
public int getCurrentTab ()
public String getCurrentTabTag ()
public View getCurrentTabView ()
public View getCurrentView ()
public FrameLayout getTabContentView ()
返回Tab
content的FrameLayout
public TabWidget getTabWidget ()
public void setCurrentTab (int index)
设置当前的Tab by index
public void setCurrentTabByTag (String tag)
设置当前的Tab by tag
public void setOnTabChangedListener
(TabHost.OnTabChangeListener l)
设置TabChanged事件的响应处理
public void setup ()
这个函数后面介绍
TabHost.TabSpec
从上面的函数可以知道如何添加tab了,要注意,这里的Tag(标签),不是Tab按钮上的文字。
而要设置tab的label和content,需要设置TabHost.TabSpec类。 引用SDK里面的话——“A tab has
a tab indicator, content, and a tag that is used to keep track of
it.”,TabHost.TabSpec就是管理这3个东西:
public String getTag ()
public TabHost.TabSpec setContent
public TabHost.TabSpec setIndicator
我理解这里的Indicator
就是Tab上的label,它可以
设置label
: setIndicator (CharSequence
label)
或者同时设置label和icon
:setIndicator
(CharSequence label, Drawable icon)
或者直接指定某个view
: setIndicator (View view)
对于Content
,就是Tab里面的内容,可以
设置View的id
: setContent(int viewId)
或者TabHost.TabContentFactory
的createTabContent(String
tag)来处理:setContent(TabHost.TabContentFactory contentFactory)
或者用new Intent
来引入其他Activity的内容:setContent(Intent
intent)
主程序代码
package com.yang.tabletest;
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class TableTestAcitivity extends TabActivity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
//获得当前TabActivity的TabHost
TabHost tabHost = getTabHost();
LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true);
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("主页")
.setContent(R.id.view1));
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("标题")
.setContent(R.id.view2));
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("简介")
.setContent(R.id.view3));
tabHost.addTab(tabHost.newTabSpec("tab4")
.setIndicator("关于")
.setContent(R.id.view4));
}
}
tabls.xml里面的代码
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/view1"
android:background="@drawable/blue"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/tabs_1_tab_1"/>
<TextView android:id="@+id/view2"
android:background="@drawable/red"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/tabs_1_tab_2"/>
<TextView android:id="@+id/view3"
android:background="@drawable/green"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/tabs_1_tab_3"/>
<TextView android:id="@+id/view4"
android:background="@drawable/green"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/tabs_1_tab_4"/>
</FrameLayout>
string.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TableTestAcitivity!</string>
<string name="app_name">阿福学习</string>
<string name="tabs_1_tab_1">主页</string>
<string name="tabs_1_tab_2">标题</string>
<string name="tabs_1_tab_3">关于</string>
<string name="tabs_1_tab_4">返回</string>
</resources>
color.xml代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="darkgray">#404040ff</drawable>
<drawable name="red">#ff00ff</drawable>
<drawable name="green">#0ff0ff</drawable>
<drawable name="lightgray">#c0c0c0ff</drawable>
<drawable name="yellow">#ffFF33ff</drawable>
<drawable name="blue">#00ffff</drawable>
<drawable name="gray">#808080ff</drawable>
<drawable name="magenta">#ff6699ff</drawable>
<drawable name="cyan">#66ffffff</drawable>
<drawable name="black">#000000</drawable>
<drawable name="white">#FFFFFF</drawable>
</resources>
第二个例子的Activity代码
package com.yang.tabletest;
import android.app.TabActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
public class TableTestAcitivity extends TabActivity implements TabHost.TabContentFactory{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TabHost tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("主页", getResources().getDrawable(R.drawable.test))
.setContent(this));
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("标题",getResources().getDrawable(R.drawable.test))
.setContent(this));
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("关于",getResources().getDrawable(R.drawable.test))
.setContent(this));
}
@Override
public View createTabContent(String arg0) {
final TextView tv = new TextView(this);
tv.setText("Content for tab with tag " + arg0);
return tv;
}
}
- 大小: 14.3 KB
- 大小: 12.6 KB
分享到:
相关推荐
如果你正在学习或使用这个项目,通过阅读代码和理解上述的TabActivity使用方法,你应该能够更好地理解如何在实际项目中运用TabActivity。 总结一下,虽然TabActivity已不再推荐使用,但在特定情况下,它仍能提供一...
在`TabActivity`的实现中,通常会使用`TabHost`和`TabSpec`来创建和设置标签。`TabHost`是一个容器,用于显示和管理多个`TabSpec`。`TabSpec`则是每个标签的配置,包括标签的文本、图标以及对应的`Intent`,这个`...
在Android开发中,"切换卡"通常指的是TabActivity或者使用Fragment和TabLayout实现的界面切换效果,这是一种常见的用户界面设计,用于展示多个相关的视图或功能。本篇将详细讲解如何在Android应用中使用TabActivity...
本文将详细讲解如何在Android应用中使用TabActivity实现分页功能,并结合源码分析其工作原理。 首先,让我们了解TabHost和TabWidget这两个关键组件。TabHost是整个Tab界面的容器,它包含一个TabWidget(用于显示...
5. **使用现代替代方案**:如前所述,`TabActivity`已被弃用,现在推荐使用`ViewPager`配合`Fragment`实现类似功能。`ViewPager`滑动浏览效果更好,`Fragment`提供了更灵活的界面管理。通过`FragmentPagerAdapter`或...
Android 开发中,TabActivity 已经被废除,而使用 ActivityGroup 来代替 TabActivity,可以更加自由灵活,少很多限制和依赖。ActivityGroup 是 Google 提供的一个非常优秀的 API,但它需要做稍微复杂的重写才能用...
然而,`TabActivity`在Android API Level 13之后就被弃用了,现在推荐使用`FragmentTabHost`或者`ViewPager`结合`TabLayout`来实现类似的功能。尽管如此,理解`TabActivity`的工作原理仍然对学习Android历史和理解...
这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`TabActivity`是Android SDK中的一个类,它继承自`ActivityGroup`,在API level 13被标记为过时,...
本文将详细介绍如何使用`Fragment`来模拟`TabActivity`,并实现类似ELong主界面底部栏的动画切换效果。 首先,我们需要理解`Fragment`的概念。`Fragment`是Android应用中的一个可重用组件,它代表UI的一部分,可以...
本篇文章将详细解析如何使用`TabActivity`实现滑动翻页并加入动画效果。 首先,`TabHost`是`TabActivity`的核心组件,它负责管理所有的选项卡和对应的活动。我们需要在布局文件中定义一个`TabHost`,然后在代码中...
在实际开发中,由于`TabActivity`已经过时,现在推荐使用`Fragment`和`ViewPager`来实现类似的选项卡功能。`Fragment`可以看作是一个可重用的UI组件,而`ViewPager`则允许用户左右滑动切换不同的`Fragment`,这提供...
在TabActivity中使用Fragment,可以创建更灵活、可定制的用户界面,每个Tab下的内容都可以由一个独立的Fragment来承载。 TabActivity在早期的Android版本中被广泛使用,它提供了一个容器来显示多个Tab,每个Tab通常...
在早期的Android版本中,TabActivity被广泛使用来实现这一功能,但现在已被废弃,推荐使用Fragment和ViewPager来代替。然而,为了理解这个老式的方法,我们将深入探讨如何使用TabActivity简单实现TabHost显示。 ...
然而,随着Android设计指南的更新,现在推荐使用FragmentTabHost或ViewPager配合Fragment来实现类似功能,因为TabActivity已经过时,不推荐在新项目中使用。 1. **创建TabActivity**:创建一个TabActivity类,然后...
10. **优化与性能**:使用TabActivity可能会导致内存消耗增加和性能问题,因为每个标签下的Activity都会被实例化。使用Fragment和ViewPager可以避免这个问题,因为它们在内存中只保留当前显示的页面。 总之,...
本教程将详细介绍如何使用TabActivity创建一个多页显示的应用,并探讨相关的知识点。 首先,TabHost是Android系统提供的一个用于创建带有标签页的布局组件。它包含两个主要部分:TabWidget(标签栏)和FrameLayout...
看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的...