【2013-11-18】Android应用开发笔记:tabhost的两种实现方式

发布时间:2026/7/10 23:16:48
【2013-11-18】Android应用开发笔记:tabhost的两种实现方式 [历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-11-18 标题Android应用开发笔记tabhost的两种实现方式分类编程 / android 标签android·actionbar·actionbarsherlock·tabhostAndroid应用开发笔记tabhost的两种实现方式github备注Android自带的FragmentTabhostactivity\_second.xml文件SecondActivity.java文件备注actionbarsherlock:activity\_third.xmlThirdActivity.java备注附上demo的几张截图android界面开发中有两种实现tabhost的方式一种是使用android自带的FragmentTabHost另外一种是使用actionbarsherlock来实现。下面分别备份下两种的实现方式。github【 https://github.com/cstriker1407/android/tree/master/HelloLibABS 】备注代码比较乱里面有很多功能。Android自带的FragmentTabhostactivity_second.xml文件?xml version1.0 encodingutf-8?LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/baseandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid.support.v4.app.FragmentTabHostandroid:idandroid:id/tabhostandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentFrameLayoutandroid:idandroid:id/tabcontentandroid:layout_width0dpandroid:layout_height0dp//android.support.v4.app.FragmentTabHost/LinearLayoutSecondActivity.java文件publicclassSecondActivityextendsSlidingFragmentActivity{privateFragmentTabHosttabHost;OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setSlidingActionBarEnabled(false);setContentView(R.layout.activity_second);setBehindContentView(R.layout.activity_leftmenu);SlidingMenusmgetSlidingMenu();sm.setBehindWidth(300);sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//从这里开始为tabhost的使用。上面为slidmenu的demotabHost(FragmentTabHost)findViewById(android.R.id.tabhost);tabHost.setup(this,getSupportFragmentManager(),R.id.base);tabHost.addTab(tabHost.newTabSpec(left).setIndicator(dd),LeftFrag.class,null);tabHost.addTab(tabHost.newTabSpec(right).setIndicator(xx),RightFrag.class,null);}}备注FragmentTabHost和FrameLayout的id必须设置为如上id不能修改。tabhost作者没有实际使用过只是备份下最简单的实现方式。actionbarsherlock:activity_third.xml?xml version1.0 encodingutf-8?LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalFrameLayoutandroid:idid/frameandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/FrameLayout/LinearLayoutThirdActivity.javapublicclassThirdActivityextendsSherlockFragmentActivityimplementsTabListener{OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_third);getSupportActionBar().setDisplayShowTitleEnabled(false);getSupportActionBar().setDisplayShowHomeEnabled(false);getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);ActionBar.TabnewTabgetSupportActionBar().newTab();newTab.setText(left);newTab.setTabListener(this);getSupportActionBar().addTab(newTab);ActionBar.TabnewTab2getSupportActionBar().newTab();newTab2.setText(right);newTab2.setTabListener(this);getSupportActionBar().addTab(newTab2);}OverridepublicvoidonTabSelected(Tabtab,FragmentTransactionft){if(tab.getText().equals(left)){ft.replace(R.id.frame,newLeftFrag());}if(tab.getText().equals(right)){ft.replace(R.id.frame,newRightFrag());}}OverridepublicvoidonTabUnselected(Tabtab,FragmentTransactionft){}OverridepublicvoidonTabReselected(Tabtab,FragmentTransactionft){}}备注1作者当前并没有实际使用tabhost这里只是备份下最简单的使用方式。附上demo的几张截图更新如果actionbarsherlock支持tabhost那么android自带的actionbar应该也可以支持tabhost作者没有做过实现不过猜想API应该和sherlock差不多。