我们要去实现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();
## 最后
都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。
**技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;**
> 我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
>![](https://img-blog.csdnimg.cn/img_convert/f2bc6904856e3e706779a6cbb1ac8d54.webp?x-oss-process=image/format,png)
**Java语言与原理;**
大厂,小厂。Android面试先看你熟不熟悉Java语言
> ![](https://img-blog.csdnimg.cn/img_convert/94ae985dd5a94ee4485aa3be0ce06132.webp?x-oss-process=image/format,png)
**高级UI与自定义view;**
自定义view,Android开发的基本功。
> ![](https://img-blog.csdnimg.cn/img_convert/7646ad5b5cfef2fd03834b1a43a02ad0.webp?x-oss-process=image/format,png)
**性能调优;**
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
> ![](https://img-blog.csdnimg.cn/img_convert/b8f08d794a2bbc940e06130c62ffae81.webp?x-oss-process=image/format,png)
**NDK开发;**
未来的方向,高薪必会。
> ![](https://img-blog.csdnimg.cn/img_convert/1513e1a8d5724a92b92f138e3404b63f.webp?x-oss-process=image/format,png)
**前沿技术;**
组件化,热升级,热修复,框架设计
> ![](https://img-blog.csdnimg.cn/img_convert/dc95487dea810667e2146296fde78937.webp?x-oss-process=image/format,png)
> 网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
**不出半年,你就能看出变化!**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
**不出半年,你就能看出变化!**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**