当前位置: 首页 > news >正文

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

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-11-18| 标题:Android应用开发笔记:tabhost的两种实现方式分类:编程 / android |标签:android·actionbar·actionbarsherlock·tabhost


Android应用开发笔记:tabhost的两种实现方式

    • github:
    • 备注:
    • Android自带的FragmentTabhost:
      • activity\_second.xml文件:
      • SecondActivity.java文件:
      • 备注:
    • actionbarsherlock:
      • activity\_third.xml:
      • ThirdActivity.java:
      • 备注:
    • 附上demo的几张截图:

android界面开发中有两种实现tabhost的方式:一种是使用android自带的FragmentTabHost,另外一种是使用actionbarsherlock来实现。下面分别备份下两种的实现方式。

github:

【 https://github.com/cstriker1407/android/tree/master/HelloLibABS 】

备注:

代码比较乱,里面有很多功能。

Android自带的FragmentTabhost:

activity_second.xml文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/base"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v4.app.FragmentTabHostandroid:id="@android:id/tabhost"android:layout_width="match_parent"android:layout_height="wrap_content"><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="0dp"android:layout_height="0dp"/></android.support.v4.app.FragmentTabHost></LinearLayout>

SecondActivity.java文件:

publicclassSecondActivityextendsSlidingFragmentActivity{privateFragmentTabHosttabHost;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setSlidingActionBarEnabled(false);setContentView(R.layout.activity_second);setBehindContentView(R.layout.activity_leftmenu);SlidingMenusm=getSlidingMenu();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);}}

备注:

  1. FragmentTabHost和FrameLayout的id必须设置为如上id,不能修改。
  2. tabhost作者没有实际使用过,只是备份下最简单的实现方式。

actionbarsherlock:

activity_third.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><FrameLayoutandroid:id="@+id/frame"android:layout_width="match_parent"android:layout_height="match_parent"></FrameLayout></LinearLayout>

ThirdActivity.java:

publicclassThirdActivityextendsSherlockFragmentActivityimplementsTabListener{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_third);getSupportActionBar().setDisplayShowTitleEnabled(false);getSupportActionBar().setDisplayShowHomeEnabled(false);getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);ActionBar.TabnewTab=getSupportActionBar().newTab();newTab.setText("left");newTab.setTabListener(this);getSupportActionBar().addTab(newTab);ActionBar.TabnewTab2=getSupportActionBar().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差不多。

http://www.jsqmd.com/news/1163793/

相关文章:

  • 无货源自动下单安全吗?新手先确认这 5 件事,抖掌柜密文履约更合规 - 抖掌柜
  • 2026年拓客软件排行榜TOP10:功能、价格、适用人群全解析 - 米諾
  • UVa 641 Do the Untwist
  • 【2013-11-18】Android应用开发笔记:swipelistview介绍
  • 文心输出的内容粘贴有符号好烦不用愁,AI 导出鸭轻松规整格式
  • 为了让代码极具可读性、结构清晰,并且彻底摆脱各种复杂的底层字符编码,我们应该引入 C# 现代开发中最推崇的面向对象与表现力原则
  • 2026湖北真空武昌鱼货源新选择:荆味、樊口厂家产地直供详解
  • 2026 年 7 月苏州吴中特色餐饮店测评:地道江南风味探店指南 - 资讯纵览
  • 终极指南:如何免费重置JetBrains IDE试用期,轻松获得无限30天使用权限
  • APScheduler 是什么?
  • AI 能记住了,但能自己干活吗?——看懂执行系统,你就知道它怎么完成复杂任务
  • 2026年7月最新福州宝珀官方售后客服电话及服务网点地址查询 - 宝珀官方售后服务中心
  • AI供稿不要急躁,不然拿不到稿费
  • 生产事故复盘模板:从 Timeline 到 Action Item 的结构化方法
  • 2026长春朝阳区管道疏通测评|正规马桶下水道疏通、化粪池清理、管道改造、首饰打捞靠谱推荐(春城到家实测避坑) - 资讯纵览
  • Service Mesh 落地实战:Istio 从入门到生产,流量治理全解析
  • 【2013-11-10】Android应用开发笔记:分享至微博及友盟的基本使用
  • 计网物理层基本概念
  • 第一章Netty,transferTo和transferFrom区别
  • Codex 回答很长时,哪些内容可以先跳过,哪些一定要看
  • 操作系统文件系统与日志结构合并树
  • Openclaw本地部署指南:Node.js 20+环境搭建与Skill开发实战
  • 2026年7月最新积家南京建邺万达广场维修保养服务电话 - 积家官方售后服务中心
  • 流处理中的事件时间与处理时间
  • ClickHouse vs Prometheus: 高基数挑战,ClickHouse如何化解?(第2篇)
  • 【2013-11-10】Android应用开发笔记:使用Messenger与Service通讯
  • 如何构建自进化企业级 Agent 平台
  • 第一章Netty, NIO字节缓冲区案例实现
  • 大模型 API 容错设计:重试、降级、熔断一个都不能少
  • ST-Link 下载报错定位手册(含接线+设置)