1.新建一个Tab项目(注意:不要生成main Acitivyt)
2.在包里面新建一个类(TabDemoActivity,继承于TabActivity而不是Activity)
package com.example.chong;
import android.app.TabActivity;
public class TabDemoActivity extends TabActivity
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
3、为标签页面设计对应页面布局,一般采用FrameLayout作为根布局,每个标签页面对应一个子节点的layout。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- 第一个Tab对应的布局 -->
<TextView
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab1里的内容" />
<!-- 第er个Tab对应的布局 -->
<TextView
android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab2里的内容" />
<!-- 第三个Tab对应的布局 -->
<TextView
android:id="@+id/view3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab3里的内容" />
</FrameLayout>
4.在TabDemoActivity中,首先应该声明TabHost,然后用LayoutInflater过滤出布局,给TabHost加上含有Tab页面的FrameLayout
private TabHost tabHost;
TabHost = this.getTabHost();//从TabActivity上面获取放置Tab的TabHost
LayoutInflater.from(this).inflate(R.layout.main,tabHost.getTabContentView(),true);
// from(this)从这个TabActivity获取LayoutInflater
// R.layout.main存放Tab布局
// 是否将inflate全系到根布局元素上
5.在TabHost中创建一个标签,然后设置它的标题、图标、标签页布局
tabHost
.addTab(tabHost.newTabSpec("tab1") //创建一个新的标签“tab1”
.setIndicator("KK",getResources().getDrawable(R.drawable.jpg)) // 设置显示标题KK,设置标签图标为jpg
.setContent(R.id.view1)); // 设置该标签页的布局内容为R.idview对应的内容
6.可以为标签 tabHost 添加标签切换事件处理(setOnTabChangedListener)
tabHost.setOnTabChangedListener ( new OnTabChangedListener () {
@Override
public void onTabChanged(String tabId)
{
//TODO Auto-generated method stub
}
});
main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab1里的内容" />
<TextView
android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab2里的内容" />
<TextView
android:id="@+id/view3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue"
android:text="这里是Tab3里的内容" />
</FrameLayout>
TabDemoActivity.java
package com.example.chong;
import android.os.Bundle;
import android.app.Activity;
import android.app.TabActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
public class TabDemoActivity extends TabActivity implements OnTabChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("TabDemoActivity");
TabHost tabHost = getTabHost();
LayoutInflater.from(this).inflate(R.layout.tab_demo,tabHost.getTabContentView(),true);
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab11").setContent(R.id.view1));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("tab22").setContent(R.id.view2));
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab33").setContent(R.id.view3));
tabHost.setOnTabChangedListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.tab_demo, menu);
return true;
}
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
if(tabId.equals("tab1"))
{
Toast.makeText(this, "进入了第一个标签页对应的页面!", Toast.LENGTH_SHORT).show();
}
if(tabId.equals("tab2"))
{
Toast.makeText(this, "进入了第二个标签页对应的页面!", Toast.LENGTH_SHORT).show();
}
if(tabId.equals("tab3"))
{
Toast.makeText(this, "进入了第三个标签页对应的页面!", Toast.LENGTH_SHORT).show();
}
}
}