第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。只要定义具体Tab内容布局就行了.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"> <TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="所有通话记录"></TextView> <TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已接来电"></TextView> <TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="未接来电"></TextView> </FrameLayout>
 package com.example.testtabhost;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.OnTabChangeListener; public class MainActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); TabHost th = getTabHost();
//声明TabHost,然后用LayoutInflater过滤出布局来,给TabHost加上含有Tab页面的FrameLayout
//from(this)从这个TabActivity获取LayoutInflater  
//R.layout.main 存放Tab布局
//通过TabHost获得存放Tab标签页内容的FrameLayout  
//是否将inflate 拴系到根布局元素上
LayoutInflater.from(this).inflate(R.layout.activity_main, th.getTabContentView(), true);
//通过TabHost获得存放Tab标签页内容的FrameLayout,
//newTabSpecd的作用是获取一个新的 TabHost.TabSpec,并关联到当前 TabHost
//setIndicator的作用是指定标签和图标作为选项卡的指示符.
//setContent的作用是指定用于显示选项卡内容的视图 ID.
th.addTab(th.newTabSpec("all").setIndicator("所有通话记录", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.TextView01));
th.addTab(th.newTabSpec("ok").setIndicator("已接来电",getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.TextView02));
th.addTab(th.newTabSpec("cancel").setIndicator("未接来电",getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.TextView03));
//setOnTabChangeListener的作业是注册一个回调函数,当任何一个选项卡的选中状态发生改变时调用.
th.setOnTabChangedListener(
new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Toast.makeText(MainActivity.this, tabId, Toast.LENGTH_LONG).show();
}
}
);
}
}

第二种:不用继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是 

@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。TabHost的id可以自定义.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hometabs"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabHost android:id="@+id/tabhost"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TabWidget> <FrameLayout android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@+id/view3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout> </LinearLayout>
</TabHost>
</LinearLayout>
package com.example.testtabhost2;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TabHost;
import android.widget.TabWidget; public class MainActivity extends Activity { private static final String TAG = "MainActivity"; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
tabHost.setup();
TabWidget tabWidget = tabHost.getTabWidget(); tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab1", getResources().getDrawable(R.drawable.ic_launcher))
.setContent(R.id.view1)); tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab3")
.setContent(R.id.view3)); tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab2")
.setContent(R.id.view2)); final int tabs = tabWidget.getChildCount();
Log.i(TAG, "***tabWidget.getChildCount() : " + tabs); final int tabWidth = 90;
final int tabHeight = 45; for (int i = 0; i < tabs; i++) {
/* final View view = tabWidget.getChildAt(i);
view.getLayoutParams().width = tabWidth;
view.getLayoutParams().height = tabHeight;
final TextView tv = (TextView) view.findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));
MarginLayoutParams tvMLP = (MarginLayoutParams)tv.getLayoutParams();
tvMLP.bottomMargin = 8;*/
}
} }

最新文章

  1. Excel函数——DATE、SUBSTITUTE、REPLACE、ISERROR、IFERROR
  2. boost相关
  3. Django~NewProject and APP
  4. OI刷题记录
  5. Codeforces 424C(异或)
  6. 如何让JS的变量名变量化
  7. 浅谈iOS IPv6-only 新规
  8. Java程序员常用工具集
  9. BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )
  10. oschina Web应用开发
  11. [Openstack] Expecting an auth URL via either --os-auth-url or env[OS_AUTH_URL]
  12. Bullcow 牡牛和牝牛(bzoj 3398)
  13. c# List集合中First、Last、Single方法使用
  14. 第三组 通信一班 030 OSPFv2、OSPFv3综合实验
  15. python之递归与二分法
  16. IP和网段及子网掩码基础知识
  17. 异步加载的JS如何在chrome浏览器断点调试?
  18. web09 struts2配置 struts2入门
  19. POJ2157 Check the difficulty of problems 概率DP
  20. input[type=&quot;file&quot;]的样式以及文件名的显示

热门文章

  1. Asp.NETCore让FromServices回来
  2. 关于Android中设置闹钟的相对完善的解决方案
  3. 部分和(partial sum)在算法求解中的作用
  4. Centos配置java环境
  5. android获取一个用于打开Word文件的intent
  6. thinkphp3.2二维码扩展
  7. 洛谷 P3112 后卫马克Guard Mark
  8. oracle listener.ora的host不能使localhost,而应该是该机器名,否则不能用ip地址进行连接
  9. ios开发事件处理之:三 :寻找最合适的view
  10. html5 video标签如何禁止视频下载