Android中选项卡TabHost的基本使用

时间:2021-12-04 06:26:14

        今天来学习一下选项卡(TabHost)的使用,

        选项卡的使用很常见,比如说:我们在手机上面 已接来电,未接来电的分组,首先来看下实现出来的效果截图:

        Android中选项卡TabHost的基本使用

           我们要去实现TabHost,主要有两种方法:

        1、各选项内容在布局文件中定义。
        2、主Activity类继承TabActivity;
        3、用getTabHost()方法获取TabHost

      1、直接在布局文件中定义TabHost

 
   注意:TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是   @android:id/tabcontent。 


    接下来使用第一种的实现方法来去实现TabHost

    主Activity类:  

package com.jiangqq.tabhost;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class TabHostActivity_Second extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// setContentView(R.layout.tabhost_second);
// 得到TabHost
TabHost tabHost = this.getTabHost();

// 把自己的布局文件添加到TabHost 的FrameLayout中 【注意】很重要的一句代码
LayoutInflater.from(this).inflate(R.layout.tabhost_second,
tabHost.getTabContentView(), true);
// 设置选项卡
// 参数:是选项卡的标签
TabSpec parentSpec = tabHost.newTabSpec("parent");
parentSpec.setIndicator("基类",
this.getResources().getDrawable(R.drawable.announcements256));
parentSpec.setContent(R.id.tab_1);

TabSpec subSpec = tabHost.newTabSpec("sub");
subSpec.setIndicator("子类",
this.getResources().getDrawable(R.drawable.content256));
subSpec.setContent(R.id.tab_2);

tabHost.addTab(parentSpec);
tabHost.addTab(subSpec);

}
}
      TabHost的布局文件:

      

package com.jiangqq.tabhost;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class TabHostActivity_Second extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// setContentView(R.layout.tabhost_second);
// 得到TabHost
TabHost tabHost = this.getTabHost();

// 把自己的布局文件添加到TabHost 的FrameLayout中 【注意】很重要的一句代码
LayoutInflater.from(this).inflate(R.layout.tabhost_second,
tabHost.getTabContentView(), true);
// 设置选项卡
// 参数:是选项卡的标签
TabSpec parentSpec = tabHost.newTabSpec("parent");
parentSpec.setIndicator("基类",
this.getResources().getDrawable(R.drawable.announcements256));
parentSpec.setContent(R.id.tab_1);

TabSpec subSpec = tabHost.newTabSpec("sub");
subSpec.setIndicator("子类",
this.getResources().getDrawable(R.drawable.content256));
subSpec.setContent(R.id.tab_2);

tabHost.addTab(parentSpec);
tabHost.addTab(subSpec);

}
}


         

   

                    然后使用第二种方法创建TabHost

                  主Activity类:

package com.jiangqq.tabhost;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

/**
* 本例是实现TabHost----->直接在XML文件中进行配置 【注意】在xml文件中
* TahWidget和FrameLayout标签中的ID,必须要使用Android中默认的
*
* @author jiangqq
*
*/
public class TabHostActivity_First extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhost_first);
// 获取TabHost
TabHost tabHost = (TabHost) findViewById(R.id.tabs);
tabHost.setup();
// 设置选项卡
// 参数:是选项卡的标签
TabSpec parentSpec = tabHost.newTabSpec("parent");
parentSpec.setIndicator("基类",
this.getResources().getDrawable(R.drawable.announcements256));
parentSpec.setContent(R.id.tab_1);

TabSpec subSpec = tabHost.newTabSpec("sub");
subSpec.setIndicator("子类",
this.getResources().getDrawable(R.drawable.content256));
subSpec.setContent(R.id.tab_2);

tabHost.addTab(parentSpec);
tabHost.addTab(subSpec);

}
}

       布局文件:

     

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TabHost
android:id="@+id/tabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TabWidget>

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<TextView
android:id="@+id/tab_1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="jiangqq_TabHostDemo_First" >
</TextView>

<TextView
android:id="@+id/tab_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="jiangqq_TabHostDemo_Second" >
</TextView>
</FrameLayout>
</LinearLayout>
</TabHost>

</LinearLayout>
      


     大家可以比较一下两种方法的异同点,差异不是很大,创建起来也比较简单