1.概念

盛放Tab的容器就是TabHost。TabHost的实现有两种方式:

第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。

第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。

2.案例

1)继承TabActivity

res/layout/main.xml

HelloTabHost.java

public class HelloTabHost extends TabActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//调用TabActivity的getTabHost()方法获取TabHost对象

TabHost tabHost = getTabHost();

//设置使用TabHost布局

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

//添加第一个标签页

tabHost.addTab(tabHost.newTabSpec("tab01").setIndicator("已接电话").setContent(R.id.tab01));

//添加第二个标签页,并在其标签上添加一个图片

tabHost.addTab(tabHost.newTabSpec("tab02").setIndicator("未接电话",getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab02));

//添加第三个标签页

tabHost.addTab(tabHost.newTabSpec("tab03").setIndicator("已拨电话").setContent(R.id.tab03));

}

}运行效果图:

2)不继承TabActivity

继承普通Activity,标签id必须为tabs、标签id必须为tabcontent.这个方式在通过findViewById获得TabHost之后,必须要调用setup方法。

main.xml代码

android:layout_height="wrap_content" />

Activity中代码:

public class TabHostTest extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// 获取TabHost对象

TabHost tabHost = (TabHost) findViewById(R.id.tabhost);

// 如果没有继承TabActivity时,通过该种方法加载启动tabHost

tabHost.setup();

tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("第一个标签",

getResources().getDrawable(R.drawable.icon)).setContent(

R.id.view1));

tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("第三个标签")

.setContent(R.id.view3));

tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("第二个标签")

.setContent(R.id.view2));

}

}

效果图:

自定义TabHost的 TabWidget:

define.xml:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/bg"

android:orientation="vertical"

android:gravity="center"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/ic_launcher"

/>

android:id="@+id/tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

在Activity中的使用:

private View getView(String name){

LayoutInflater inflater = getLayoutInflater();

View v = inflater.inflate(R.layout.define, null);

TextView tv = (TextView) v.findViewById(R.id.tv);

tv.setText(name);

return v;

}

在tabHost中的设置头部的TabWidget:

TabSpec tab1 = tabHost.newTabSpec("one");

tab1.setIndicator(getView("首页")); //设置自定义的TabWidget

效果图:

android tabhost的使用方法,android TabHost的基本使用相关推荐

  1. android颜色值的表示方法android:background=#FFFFFFFF的意思

    android颜色值的表示方法 android:background="#FFFFFFFF"的意思 Android中的颜色值是通过红(Red).绿(Green).蓝(Blue)三原 ...

  2. android中的add方法,Android中Fragment怎么addView?

    慕勒3428872 Fragment是Android honeycomb 3.0新增的概念,在Android--Fragment介绍.AndroidFragment使用.Android Fragmen ...

  3. android的反调试方法,Android平台融合多特征的APP反调试方法与流程

    本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域. 背景技术: 应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑.动态脱壳等攻击方式所采取的必要手 ...

  4. android 开启子线程方法,android中开启子线程

    AndroidRuntime(673): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/ ...

  5. android 矢量图片使用方法,Android中的矢量图

    概述 VectorDrawable是通过XML文件中的一系列点,线和曲线及其相关颜色信息定义的. 使用VectorDrawable的主要优点是图像可扩展性. 它可以缩放而不损耗显示质量,这意味着相同的 ...

  6. android 设置全屏方法,Android中设置全屏的方法

    在开发中,我们经常需要把我们的应用设置为全屏,这里有两种方式: 一是在代码中设置; 二是在配置文件中设置 一. 在代码中设置 public class BaseActivity extends Act ...

  7. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  8. android toolbar的使用方法,Android中Toolbar的基本使用

    Android的标题栏是很重要的一个模块,App是否易用很大一部分要看标题栏.写这个博客的时候刚发现谷歌推出了一种新的标题栏实现方式. 它相对于以前的ActionBar来说,最大的变化是开发者可以在标 ...

  9. android monitor的使用方法,Android Device Monitor使用方法及常见问题解决方案

    Android Device Monitor使用方法及常见问题解决方案 发布时间:2018-07-17 18:18, 浏览次数:1184 , 标签: Android Device Monitor DD ...

  10. android 闹钟提醒实现方法,Android开发实例之闹钟提醒

    本实例通过TimePickerDialog时间选择对话框让用户设置闹钟.并通过AlarmManager全局定时器在指定的时间启动闹钟Activity . 程序执行效果图: 实例代码: package ...

最新文章

  1. 单页面与多页面的区别及优缺点
  2. 中山大学提出SimAM:无参Attention!助力分类/检测/分割涨点!
  3. 关于jquery调用webservice的一些感想
  4. goland设置goroot_go环境搭建-goland使用、gopath、go命令
  5. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
  6. rocketMq发送事务消息
  7. 页面上通过地址栏传值时出现乱码的两种解决方法
  8. 关于SVN更新时文件加锁的小结
  9. 美元符号在什么计算机语言,美元符号是什么?怎么打?
  10. 柳神PAT甲级真题目录
  11. 偶然 --徐志摩
  12. 每日算法 - 列出24点游戏的所有解法
  13. NYOJ-712(动态规划)-题目----------------------------- 探寻宝藏
  14. 如何学好计算机英语怎么说,如何学好英语翻译
  15. AUTOCAD二次开发工具
  16. 公司产品经理培训内容
  17. 学习神器Toast Fish(附下载链接)
  18. android auto note 8,可持续发展BMW将发布无线安卓互联系统,CarPlay终于不再一家独大!...
  19. JUCE的UI详解(Slider篇)
  20. 华为0510 实习笔试

热门文章

  1. wifi芯片型号厂家简介
  2. Windows读写硬盘
  3. 不加群提取群成员_钉钉群机器人如何快速集成?无需API代码开发对接企业CRM,营销,表单,OA,客服和其他内部系统...
  4. 中标麒麟服务器系统安装教程,安装国产Linux中标麒麟操作系统教程
  5. 2022见证中国崛起从Python绘制中国地图开始:使用pyecharts最新版本绘制中国地图实例详解,个性化地图定制及常用参数解析
  6. Macromedia flash制作落叶飘下动画
  7. 主流WebService框架
  8. crio电压采集 labview_基于LabVIEW和CompactRIO开发的EDM过程控制器
  9. wmv怎么转换成视频mp4?
  10. 蜂鸣器发声程序c语言,基于51单片机蜂鸣器发声的C语言程序