TabHost的用法之一是用一个activity来继承TabActivity
下面看一下具体的代码:
MainActivity.java
下面的
setIndicator方法可以接受一个String类型的字符串,也可以接受一个view,比如可以传TabHost的layout布局;
setContent()方法是点按这个Tab的时候需要跳转到界面,可以new一个intent,比如:tab1.setContent(new Intent(this, com.example.tabhost.TabActivity.class));或者直接像代码中所写。直接给传一个主界面layout的一个控件id;
tabs.newTabSpec("tab1")方法是用来区分到底创建的是哪个Tab,其中给传的字符串就是用来区分的,这个字符串可以传任意的字符串
package com.example.tabhost;
import android.os.Bundle;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {
private TabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mTabHost = getTabHost();
// LayoutInflater.from(this).inflate(R.layout.activity_main,
// tabs.getTabContentView(), true);
add1();
add2();
add3();
add4();
// ImageView iv = (ImageView) tabStyle.findViewById(R.id.icon);
// TextView tv = (TextView) tabStyle.findViewById(R.id.title);
//mTabHost.getTabWidget().getChildCount()是获取tab的总个数,然后获取每个tab布局中的imageview和textview,
//分别给imageview添加图片和给textview添加标题
for(int i = 0;i < mTabHost.getTabWidget().getChildCount();i++){
LinearLayout tabStyle2 = (LinearLayout)LayoutInflater.from(this)
.inflate(R.layout.tab_style_people, null);
ImageView iv = (ImageView)mTabHost.getTabWidget().getChildAt(i).findViewById(R.id.icon);
TextView tv = (TextView)mTabHost.getTabWidget().getChildAt(i).findViewById(R.id.title);
Drawable drawable = null;
String title = null;
switch (i) {
case 0:
drawable = getResources().getDrawable(R.drawable.ic_ab_dialer_holo_light);
title = getResources().getString(R.string.callLogIconLabel);
break;
case 1:
drawable = getResources().getDrawable(R.drawable.ic_ab_favourites_holo_dark);
title = getResources().getString(R.string.contactsFavoritesLabel);
break;
case 2:
drawable = getResources().getDrawable(R.drawable.ic_ab_history_holo_dark);
title = getResources().getString(R.string.contactsGroupsLabel);
break;
case 3:
drawable = getResources().getDrawable(R.drawable.ic_ab_search_holo_dark);
title = getResources().getString(R.string.people);
break;
default:
break;
}
//将对应的图片和对应的标题添加到对应的控件中
iv.setImageDrawable(drawable);
tv.setText(title);
}
}
//添加第一个Tab
private void add1() {
LinearLayout tabStyle = (LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.tab_style_people, null);
TabSpec tab1 = mTabHost.newTabSpec("tab1");
tab1.setIndicator(getResources().getString(R.string.callLogIconLabel));
tab1.setContent(new Intent(this, com.example.tabhost.TabActivity.class));
mTabHost.addTab(tab1);
//这里的setIndicator方法可以接受一个String类型的字符串,也可以接受一个view,比如可以传TabHost的layout布局
}
//添加第二个Tab
private void add2() {
LinearLayout tabStyle = (LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.tab_style_people, null);
TabSpec tab2 = mTabHost.newTabSpec("tab2");
tab2.setIndicator(getResources().getString(R.string.contactsFavoritesLabel));
tab2.setContent(new Intent(this, com.example.tabhost.TabActivity.class));
mTabHost.addTab(tab2);
}
//添加第三个Tab
private void add3() {
LinearLayout tabStyle = (LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.tab_style_people, null);
TabSpec tab3 = mTabHost.newTabSpec("tab3");
tab3.setIndicator(getResources().getString(R.string.people));
tab3.setContent(new Intent(this, com.example.tabhost.TabActivity.class));
mTabHost.addTab(tab3);
}
//添加第四个Tab
private void add4() {
LinearLayout tabStyle = (LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.tab_style_people, null);
TabSpec tab4 = mTabHost.newTabSpec("tab4");
tab4.setIndicator(getResources().getString(R.string.people));
tab4.setContent(new Intent(this, com.example.tabhost.TabActivity.class));
mTabHost.addTab(tab4);
}
}
main.xml
<?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"
>
<LinearLayout
android:id="@+id/Tab1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是tab1"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/Tab2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是tab2"
/>
</LinearLayout>
</FrameLayout>
table_style.xml
<pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="5dip"
android:paddingRight="5dip" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="12sp"
android:textColor="#000000" />
</LinearLayout>