`

TabSpec和TabHost实例

 
阅读更多

TabSpec与TabHost

TabHost相当于浏览器中浏览器分布的集合,而Tabspec则相当于浏览器中的 每一个分页面。d在Android中,每一个TabSpec分布可以是一个组件,也可以是一个布局,然后将每一个分页装入TabHost 中,TabHost即可将其中的每一个分页一并显示出来。

步骤:

(1)继承TabActivity:在此之前继承的都是android.app.Activity类,但是这里需要继承android.app.TabActivity。

(2)创建TabHost分布菜单对象,利用以下代码。

LayoutInflater.from(this).inflate(R.layout.main,tableHost.getTabContentView());

(3)实例化实分页

java代码:

[html] view plain copy
  1. package com.test;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.TabActivity;  
  5. import android.os.Bundle;  
  6. import android.view.LayoutInflater;  
  7. import android.widget.TabHost;  
  8. import android.widget.TabHost.OnTabChangeListener;  
  9. import android.widget.Toast;  
  10. import android.widget.TabHost.TabSpec;  
  11.   
  12. public class MainActivity extends TabActivity implements OnTabChangeListener {  
  13.     /** Called when the activity is first created. */  
  14.     private TabSpec ts1 ,ts2, ts3 ;//声明3个分页  
  15.     private TabHost tableHost;//分页菜单(tab的容器)  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         tableHost  =  this .getTabHost();//实例 (分页)菜单  
  20.         //利用LayoutInflater将布局与分页菜单一起显示  
  21.         LayoutInflater.from(this).inflate(R.layout.main, tableHost.getTabContentView());  
  22.         ts1  =  tableHost .newTabSpec("tabOne");//实例化一个分页  
  23.         ts1.setIndicator("Tab1");//设置此分页显示的标题  
  24.         ts1.setContent(R.id.btn);//设置此分页的资源id  
  25.         ts2 = tableHost .newTabSpec("tabTwo");//实例化第二个分页  
  26.         //设置此分页显示的标题和图标  
  27.         ts2.setIndicator("Tab2",getResources().getDrawable(R.drawable.icon));  
  28.         ts2.setContent(R.id.et);  
  29.         ts3 tableHost .newTabSpec("tabThree");//实例化第三个分页  
  30.         ts3.setIndicator("Tab3");  
  31.         ts3.setContent(R.id.mylayout);//设置此分页的布局id  
  32.         tableHost.addTab(ts1);//菜单中添加ts1分页  
  33.         tableHost.addTab(ts2);  
  34.         tableHost.addTab(ts3);  
  35.         tableHost.setOnTabChangedListener(this);         
  36.     }  
  37.     public void onTabChanged(String tabId){  
  38.         if(tabId.equals("tabOne")){  
  39.             Toast.makeText(this, "分页1", Toast.LENGTH_LONG).show();  
  40.         }  
  41.         if(tabId.equals("tabTwo")){  
  42.             Toast.makeText(this, "分页2", Toast.LENGTH_LONG).show();  
  43.         }  
  44.         if(tabId.equals("tabThree")){  
  45.             Toast.makeText(this, "分页3", Toast.LENGTH_LONG).show();  
  46.         }  
  47.     }  
  48. }  


布局代码:

[html] view plain copy
  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2. < LinearLayout   xmlns:android = "http://schemas.android.com/apk/res/android"   
  3.     android:layout_width = "fill_parent"   
  4.     android:layout_height = "fill_parent"   
  5.     android:orientation = "vertical"   >   
  6.   
  7.     < Button   
  8.         android:id = "@+id/btn"   
  9.         android:layout_width = "fill_parent"   
  10.         android:layout_height = "fill_parent"   
  11.         android:text = "This is Tab1"   
  12.         />   
  13.     < EditText   
  14.         android:id = "@+id/et"   
  15.         android:layout_width = "fill_parent"   
  16.         android:layout_height = "wrap_content"   
  17.         android:text = "This is Tab2"   
  18.         />   
  19.     < LinearLayout   xmlns:android = "http://schemas.android.com/apk/res/android"   
  20.         android:orientation = "vertical"   
  21.         android:layout_width = "fill_parent"   
  22.         android:layout_height = "fill_parent"   
  23.         android:id = "@+id/mylayout"   
  24.         android:background = "@drawable/bg"   
  25.         >   
  26.          < Button    
  27.              android:layout_width = "fill_parent"   
  28.              android:layout_height = "wrap_content"   
  29.              android:text = "This is Tab3"   
  30.              />   
  31.          < EditText   
  32.              android:layout_width = "fill_parent"   
  33.              android:layout_height = "wrap_content"   
  34.              android:text = "This is Tab3"   
  35.              />   
  36.     </ LinearLayout >   
  37. </ LinearLayout >   


运行结果:

总结:监听分页改变事件,具体如下:

1、使用OnTabChangeListener接口,重写OnTabChanged(String tabId)函数

2、TabHost绑定监听器

3、判断OnTabChanged(String tabId)中的tabId参数进行处理事件;这里的tabId对应的是实例中每个分页传入的分页ID,而不是TabSpec.setIndicatior()设置的标题

 

转:http://blog.csdn.net/myserverthepeople/article/details/7630052

分享到:
评论

相关推荐

    Android TabHost实例完整工程源码

    总的来说,这个"Android TabHost实例完整工程源码"是一个很好的学习资源,可以帮助开发者掌握如何在Android应用中创建和管理选项卡界面,提升用户体验,同时也为深入学习Android布局设计和Activity管理提供了实践...

    Android TabHost 实例源码

    1. 创建TabHost实例:通常在布局XML文件中,我们用&lt;tabhost&gt;标签声明一个TabHost,并设置其ID。然后在Activity中通过findViewById()方法获取到这个TabHost实例。 ```java TabHost tabHost = (TabHost) findViewById...

    Android Tabhost 实例demo

    本实例演示了如何在Android应用程序中自定义TabHost,以实现多标签功能。 首先,让我们了解TabHost的基本概念。TabHost是一个容器,它包含一个TabWidget(用于显示标签)和一个FrameLayout(用于显示与标签关联的...

    TabHost实例

    这个"TabHost实例"是专为初学者设计的,旨在帮助他们理解如何使用`TabHost`来构建多标签的应用界面。下面我们将深入探讨`TabHost`的工作原理以及如何在实际项目中使用它。 `TabHost`是Android提供的一个容器,可以...

    android中tabhost各种实例及用法

    1. 创建TabHost实例:首先,在布局文件中添加TabHost,并设置其ID为android.R.id.tabhost。然后,在Activity的onCreate()方法中通过findViewById()获取TabHost实例。 ```xml &lt;TabHost android:id="@android:id/...

    android tabhost 实例

    2. 初始化TabHost:在Activity的onCreate()方法中,获取TabHost实例,并调用setup()方法来初始化它。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); ``` 3. 添加Tab:使用...

    tabhost单例模式小例子

    在需要使用TabHost的Activity中,通过`TabHostSingleton.getInstance(this).getTabHost()`获取单例的TabHost实例,然后添加Tab和设置Intent。 ```java @Override protected void onCreate(Bundle ...

    TabHost使用以及源码分析

    在Activity的`onCreate()`方法中,通过`findViewById()`获取TabHost实例,并调用`setup()`方法初始化。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); ``` 3. **创建...

    Android 嵌套TabHost示例

    `获取到TabHost实例。 2. 设置布局:调用`tabHost.setup();`初始化TabHost。 3. 添加标签:使用`TabSpec tabSpec = tabHost.newTabSpec("tag");`创建一个标签规格,然后设置标签文字、图标和关联的Intent。 4. 添加...

    TabHost两种实现方式

    3. 使用TabHost的`newTabSpec()`方法创建TabSpec,并设置标签文本和Intent。 4. 使用TabHost的`addTab()`方法将TabSpec添加到TabHost中。 5. 设置TabHost为主活动,调用`setup()`方法并传入FrameLayout引用。 第二...

    Tabhost实例

    在"Tabhost实例"中,我们将会探讨如何在屏幕下方创建并展示`TabHost`。首先,我们需要在布局文件(如`activity_main.xml`)中设置`TabHost`。`TabHost`通常包含两个主要元素:`TabWidget`用于显示tab按钮,`...

    android tabhost 开发

    首先,我们需要获取到TabHost实例,通常在Activity的onCreate()方法中进行: ```java TabHost tabHost = (TabHost) findViewById(R.id.tab_host); tabHost.setup(); ``` 2. 添加Tab 然后,我们通过TabHost的...

    安卓Android源码——封装的一个tabhost框架.zip

    3. 使用工厂模式或Builder模式:这两种设计模式可以帮助我们更优雅地创建和配置TabHost实例,避免了大量的参数传递和复杂的构造函数。 4. 考虑到灵活性:封装时应考虑到不同场景的需求,比如是否支持动态添加标签,...

    TabHost的使用方法

    在你的Activity中,通过`findViewById()`获取TabHost实例,并调用`setup()`方法初始化它。 ```java TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); ``` 3. **创建Tab** 对于每个Tab...

    tabhost 嵌套tabhost, 很简单的demo

    - **添加Tab**:使用`tabHost.setup()`初始化TabHost,并通过`TabSpec tabSpec = tabHost.newTabSpec("tag")`创建TabSpec,接着设置Tab的标签和内容,最后用`tabHost.addTab(tabSpec)`添加到TabHost中。 - **嵌套...

    tabhost资源下载

    在Activity的onCreate()方法中,获取TabHost的实例,然后使用setup()方法初始化。这个方法需要传入一个含有FrameLayout的布局ID,这通常是TabHost下的一个FrameLayout。 ```java TabHost tabHost = (TabHost) ...

    tabhost android 选项卡

    1. **创建TabHost实例**:首先,在布局文件中声明一个TabHost,并设置其ID为"@android:id/tabhost"。然后在代码中通过`TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);`获取到TabHost实例。 2. **...

    封装的一个tabhost框架.zip

    `来实例化TabHost,并设置其上下文。 2. **设置布局**:使用`tabHost.setup();`来将TabHost与布局文件关联,这样TabHost就会在其内部显示内容。 3. **添加标签**:通过`TabSpec tabSpec = tabHost.newTabSpec("tag_...

    TabHost详解 博文对应源码(三):继承自TabActivity

    `获取TabHost实例。 2. **设置TabWidget**:TabWidget是TabHost中的标签显示区,通过`tabHost.setup()`方法初始化,它会把TabHost的顶级布局设置为TabWidget和下面的FrameLayout。 3. **添加Tab**:使用`TabSpec`...

Global site tag (gtag.js) - Google Analytics