`
yangguangfu
  • 浏览: 1539771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TabActivity的使用

阅读更多

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和iconsetIndicator (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
13
2
分享到:
评论
5 楼 花开花谢2014 2014-05-12  
很好,学习了
4 楼 Zero颴 2014-03-18  
讲得很细致, THX
3 楼 celiacy 2013-03-05  
非常感谢,楼主提供。
2 楼 mrxiexie 2013-02-05  
怎么别人看帖不回贴呢
1 楼 mrxiexie 2013-02-05  
可以好好学习学习了

相关推荐

    TabActivity使用释列

    如果你正在学习或使用这个项目,通过阅读代码和理解上述的TabActivity使用方法,你应该能够更好地理解如何在实际项目中运用TabActivity。 总结一下,虽然TabActivity已不再推荐使用,但在特定情况下,它仍能提供一...

    TabActivity使用实例

    在`TabActivity`的实现中,通常会使用`TabHost`和`TabSpec`来创建和设置标签。`TabHost`是一个容器,用于显示和管理多个`TabSpec`。`TabSpec`则是每个标签的配置,包括标签的文本、图标以及对应的`Intent`,这个`...

    切换卡TabActivity的使用

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

    TabActivity 分页 使用

    本文将详细讲解如何在Android应用中使用TabActivity实现分页功能,并结合源码分析其工作原理。 首先,让我们了解TabHost和TabWidget这两个关键组件。TabHost是整个Tab界面的容器,它包含一个TabWidget(用于显示...

    TabActivity之间跳转、传值

    5. **使用现代替代方案**:如前所述,`TabActivity`已被弃用,现在推荐使用`ViewPager`配合`Fragment`实现类似功能。`ViewPager`滑动浏览效果更好,`Fragment`提供了更灵活的界面管理。通过`FragmentPagerAdapter`或...

    ActivityGroup 代替TabActivity的用法

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

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

    然而,`TabActivity`在Android API Level 13之后就被弃用了,现在推荐使用`FragmentTabHost`或者`ViewPager`结合`TabLayout`来实现类似的功能。尽管如此,理解`TabActivity`的工作原理仍然对学习Android历史和理解...

    TabActivity笔记

    这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`TabActivity`是Android SDK中的一个类,它继承自`ActivityGroup`,在API level 13被标记为过时,...

    用Fragment模拟TabActivity

    本文将详细介绍如何使用`Fragment`来模拟`TabActivity`,并实现类似ELong主界面底部栏的动画切换效果。 首先,我们需要理解`Fragment`的概念。`Fragment`是Android应用中的一个可重用组件,它代表UI的一部分,可以...

    TabActivity 实现滑动翻页源码

    本篇文章将详细解析如何使用`TabActivity`实现滑动翻页并加入动画效果。 首先,`TabHost`是`TabActivity`的核心组件,它负责管理所有的选项卡和对应的活动。我们需要在布局文件中定义一个`TabHost`,然后在代码中...

    TabActivity

    在实际开发中,由于`TabActivity`已经过时,现在推荐使用`Fragment`和`ViewPager`来实现类似的选项卡功能。`Fragment`可以看作是一个可重用的UI组件,而`ViewPager`则允许用户左右滑动切换不同的`Fragment`,这提供...

    Fragment + TabActivity实现标签内跳转

    在TabActivity中使用Fragment,可以创建更灵活、可定制的用户界面,每个Tab下的内容都可以由一个独立的Fragment来承载。 TabActivity在早期的Android版本中被广泛使用,它提供了一个容器来显示多个Tab,每个Tab通常...

    使用TabActivity简单实现TabHost显示

    在早期的Android版本中,TabActivity被广泛使用来实现这一功能,但现在已被废弃,推荐使用Fragment和ViewPager来代替。然而,为了理解这个老式的方法,我们将深入探讨如何使用TabActivity简单实现TabHost显示。 ...

    Android学习4——ListActivity,TabActivity

    然而,随着Android设计指南的更新,现在推荐使用FragmentTabHost或ViewPager配合Fragment来实现类似功能,因为TabActivity已经过时,不推荐在新项目中使用。 1. **创建TabActivity**:创建一个TabActivity类,然后...

    TabActivity中的Tab标签详细设置

    10. **优化与性能**:使用TabActivity可能会导致内存消耗增加和性能问题,因为每个标签下的Activity都会被实例化。使用Fragment和ViewPager可以避免这个问题,因为它们在内存中只保留当前显示的页面。 总之,...

    Android TabActivity实现多页显示效果

    本教程将详细介绍如何使用TabActivity创建一个多页显示的应用,并探讨相关的知识点。 首先,TabHost是Android系统提供的一个用于创建带有标签页的布局组件。它包含两个主要部分:TabWidget(标签栏)和FrameLayout...

    TabActivity替代

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

Global site tag (gtag.js) - Google Analytics