1、-Android编程基础1Android开发教程笔记-Android编程基础2Tab与TabHost这就是Tab,而盛放Tab的容器就是TabHost如何实现?每一个Tab还对应了一个布局,这个就有点好玩了。一个Activity,对应了多个功能布局。新建一个Tab项目,注意,不要生成main Activity这里不要选在包里面新建一个类MyTab,继承于TabActivity其实,TabActivity是Activity的子类package zyf.tab.test;importandroid.app.TabActivity;public class MyTab extends TabActi
2、vity 从父类继承OnCreate()入口方法package zyf.tab.test;importandroid.app.TabActivity;importandroid.os.Bundle;public class MyTab extends TabActivity Overrideprotectedvoid onCreate(Bundle savedInstanceState)/TODOAuto-generated methodstubsuper.onCreate(savedInstanceState);-Android编程基础3在Manifest.xml文件中注册一下MyTab类(
3、Activity)这时候,需要设计一下标签页对应的布局,一般采用FrameLayout作为根布局,每个标签页面对应一个子节点的Layout首先,应该声明TabHost,然后用LayoutInflater过滤出布局来,给TabHost加上含有Tab页面的FrameLayoutprivateTabHostmyTabhost;myTabhost=this.getTabHost();/从TabActivity上面获取放置Tab的TabHostLayoutInflater.from(this).inflate(R.layout.main, myTabhost.getTabContentView(), t
4、rue);/from(this)从这个TabActivity获取LayoutInflater/R.layout.main存放Tab布局/通过TabHost获得存放Tab标签页内容的FrameLayout/是否将inflate拴系到根布局元素上myTabhost.setBackgroundColor(Color.argb(150, 22, 70,150);/设置一下TabHost的颜色接着,在TabHost创建一个标签,然后设置一下标题图标标签页布局myTabhost.addTab(myTabhost.newTabSpec(“TT“)/制造一个新的标签TT.setIndicator(“KK“,g
5、etResources().getDrawable(R.drawable.ajjc)/设置一下显示的标题为KK,设置一下标签图标为ajjc.setContent(R.id.widget_layout_red);/设置一下该标签页的布局内容为R.id.widget_layout_red,这是FrameLayout中的一个子Layout标签切换事件处理,setOnTabChangedListenermyTabhost.setOnTabChangedListener(newOnTabChangeListener()OverridepublicvoidonTabChanged(String tabId
6、)/TODOAuto-generated methodstub);-Android编程基础5各个标签页的动态MENU先把在XML中设计好的MENU放到一个int数组里privatestatic final intmyMenuResources = R.menu.phonebook_menu,R.menu.addphone_menu,R.menu.chatting_menu,R.menu.userapp_menu;在setOnTabChangedListener()方法中根据标签的切换情况来设置myMenuSettingTagOverridepublicvoidonTabChanged(Stri
7、ng tagString)/TODOAuto-generated methodstubif (tagString.equals(“One“)myMenuSettingTag =1;if (tagString.equals(“Two“)myMenuSettingTag =2;if (tagString.equals(“Three“)myMenuSettingTag =3;if (tagString.equals(“Four“) myMenuSettingTag =4;if (myMenu!=null)onCreateOptionsMenu(myMenu);然后onCreateOptionsMen
8、u(Menumenu)方法中通过MenuInflater过滤器动态加入MENUOverridepublicboolean onCreateOptionsMenu(Menumenu)/TODOAuto-generated methodstub/Holdon to thismyMenu =menu;myMenu.clear();/清空MENU菜单/Inflate the currentlyselectedmenuXML resource.MenuInflater inflater =getMenuInflater();/从TabActivity这里获取一个MENU过滤器switch (myMenu
9、SettingTag) case1:inflater.inflate(myMenuResources0,menu);/动态加入数组中对应的XML MENU菜单break;case2:inflater.inflate(myMenuResources1,menu);break;-Android编程基础6case3:inflater.inflate(myMenuResources2,menu);break;case4:inflater.inflate(myMenuResources3,menu);break;default:break;returnsuper.onCreateOptionsMenu(menu);运行效果撰写:地狱怒兽联系:-Android编程基础7