【Android入门】Android TabHost的使用(翻译与Android SDK)

RK3572-Android16-记录一次OTA升级失败解决方案 这里记录一次解决RK3576 Android16 OTA 用Recovery 升级失败的一次解决案例,将部分经验作为总结。本次OTA升级耗时了几天,最终是RK给出的解决方案,再加上经验来解决了其它部分问题新平台,高一点的Android版本,可能本身有bug,多请教平台来,不要蒙着干,干不出来的。 阅读详情

原文地址:

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

 

 

翻译:

 

你需要一个TabHost和一个TabWidget来创建一个带Tab的界面,TabHost必须是Layout的根节点,该Layout文件还必须包换TabWidget来显示Tabs和一个FrameLayout来显示Tab的内容。

 

Tab内容的实现有两种,1.使用Tabs在同一个活动Activity种切换视图Views,或者使用Tabs来切换不同的活动.使用哪种方法完全取决于你自己的需要,不过如果每个Tab提供完全不同的用户活动,那更优的方法是让每个Tab都使用独立的活动,这样的设计比把所有的东西都写在一个活动和Layout中更方便管理。

 

在这个介绍中,我将为每个Tab创建独立的活动:

 

1.  创建一个名为"HelloTabWidget"的新项目:

 

2.  首先,在你的项目中创建三个独立的活动类,ArtistsActivity,AlbumsActivity和SongsActivity。这些类每个都代表着一个独立的Tab。现在,使用TextView让每个活动都显示一个简单的信息,比如:

 

  •  注意这里没有使用Layout的XML文件,只是创建了一个TextView,给它一段Text并把它设置成内容Content. 给三个活动类都做类似的事情。让后再Android Manifest文件中加入<activity/> 标签。
  •  你需要为每个Tab设置图标,你应该为每个图标创建两个版本,一个为了当这个图标被选择的时候,一个为了未被选择的时候。当然公认推荐的做法是被选择的图标为深色的(灰),未被选择的图标为亮色的(白色),比如:
  •  

     

    white  grey

     

     

    在这个介绍中,你可以复制以上图片并在所有三个Tabs中使用它们(当你在你自己的应用中创建Tabs,你应该创建自定义的Tab 图标)。

    现在创建一个state-list drawable的文件声明为每一个Tab状态State该使用哪张图片:

    1. 把图标文件导入在res/drawable/目录里

    2. 在res/drawable/里创建一个新的名为ic_tab_artists.xml的文件输入代码如下

     

     

    这是一个state-list drawable,你将把它应用程你TAB的图像,当TAB的状态改变,TAB的图标也会自动在这里定义的图像间切换。

     

     

    4. 打开res/layout/main.xml然后输入以下代码

     

    以上创建的Layout是将显示TABS以及提供各活动间导航的Layout.

    Tabhost对象要求在他内部的某个地方要包含有一个TabWidget和一个FrameLayout.为了将TabWidget和FrameLayout垂直摆放,这里使用一个线性布局Linear Layout.FrameLayout是显示每个TAB内容的地方。现在FrameLayout是空的是由于TabHost会自动将活动填充到里面

     

    注意,TabWidget和FrameLayout组件的ID是tabs和tabcontent,这里必须要使用这两个ID,这样TabHost才可以取得它们的引用

     

    5.  现在打开HelloTabWidget.java,使它继承于TabActivity

     

     

    6. 将下列代码作为该类的onCreate()方法

     

    以上代码设置了每个TAB的标题和图标,然后给每个分配了一个活动

    首先TabHost的引用由getTabHost()函数返回。然后,为每个TAB,一个TabHost.TabSpec对象被创建用来定义TAB的属性。方法newTabSpec(String)被用来创建一个新的标识为输入的字符串的TabHost.TabSpec对象。为每个Tab,setIndicator(CharSequence,Drawable)方法被调用来定义该TAB得标题和图标。setContent(Intent)被调用用来指定打开适当活动的Intent。然后每个TabHost.TabSpec通过调用addTab(TabHost.TabSpec)方法被添加到TabHost。

     

    在最后,setCurrentTab(int)方法定义了默认被选中显示的Tab,输入的INT值为被默认选中的TAB的索引位置。

     

    注意到TabWidget对象没有被引用过。这是因为一个TabWidget对象一定一直是一个你用来完成几乎所有和TABS有关互动的TabHost的一个孩子。所以当一个TAB被添加到TabHost的时候,他也会自动被添加到孩子TabWidget里。

     

    7.  现在打开Android Manifest文件,添加NoTitleBar主题到HelloTabWidget的<activity>标签内,这将会自动去除默认的应用程序顶部的标题,给Tabs提供更多的空间,现在<activity>标签看起来应该是这样的:

     


     

    8.  运行程序

    你的程序大致上应该是这样滴!

    demo

详解Android应用中使用TabHost组件进行布局的基本方法 TabHost布局文件 我们先来了解一下布局文件的基本内容: 1. 根标签及id 设置Android自带id : XML布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id : android:id=@android:id/tabhost ; getHost()获取前提 : 设置了该id之后, 在Activity界面可以使用 getHost(), 获取这个TabHost 视图对象; 示例 : 代码如下: <tabhost android:id=”@android:id/tabhost” android:layout_height=”match_parent” 立即下载

相关推荐

HFSS实战:手把手教你设计一款小型化圆极化微带天线(附仿真文件)

本文详细介绍了使用HFSS设计小型化圆极化微带天线的完整流程,包括工程初始化、辐射贴片设计、仿真设置与优化等关键步骤。通过实战案例,帮助工程师掌握圆极化天线设计技巧,解决轴比控制和耦合馈电匹配等核心问题,适用于物联网终端和便携式设备应用。

weixin_32770423的博客 338

Android UI设计 选项卡实现界面切换

使用选项卡实现界面切换 

u013891697的专栏 3060

基于微信小程序的垃圾分类系统,附源码

垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。垃圾分类小程序的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。

Java徐师兄的博客 2074

TabHost各个选项卡之间传递对象、参数及TabHost的使用

在叙述TabHost的使用之前,我们必须先知道TabActivity的生命周期,以

u010885095的专栏 2100

Unity安卓打包实战:SDK与JDK配置全攻略

本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。

weixin_30338481的博客 415

物理与工程中的‘黑话’:Kronecker delta和Levi-Civita符号到底简化了什么?

本文深入解析了物理与工程中常用的Kronecker delta和Levi-Civita符号的简化作用。通过对比传统表示与张量表示,展示了这些符号在向量运算、矩阵迹计算及流体力学模拟中的高效应用,显著提升计算效率和代码可读性。特别适合理论物理和工程数学领域的学习者与从业者。

weixin_27215403的博客 397

android tabhost每个tab显示不同的xml

java代码 package com.example.heuvan_nb_set; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import andr...

u011753609的博客 394

视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现

在计算机视觉领域,Vision Transformer (ViT) 已经证明了纯 Transformer 架构在图像分类任务上的强大能力。然而,ViT 通常需要在大规模数据集上预训练才能达到最佳性能,DeiT (Data-efficient image Transformer) 通过引入一系列训练策略和优化,使得 Transformer 模型能够在相对较小的数据集上取得优异表现。本节将详细介绍 DeiT 的技术原理,并使用 PyTorch 从零开始实现 DeiT 模型。

盼小辉丶的博客 1341

Android之TabHost使用(引用SDK例子文档)

Tab Layout To create a tabbed UI, you need to use aTabHostand aTabWidget. TheTabHostmust be the root node for the layout, which contains both theTabWidgetfor displaying the tabs a...

172

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 962

android tabhost 图标

http://www.aslibra.com/blog/post/TabHost_addTab_TabSpec_change_icon.php   做了个tab形式的界面,但一直找不到系统提供的接口怎么修改图标,因为当前选择的和未选择的会改变。   添加tab的代码其实很简单           TabHost mTabHost = getTabHost();        ...

刘寒的技术blog 370

2023华为od机试C卷【宽度最小的子矩阵】Python 实现

给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。

MISAYAONE的博客 2186

android开发学习笔记系列(2)-android应用界面编程

前言本篇博客将会简要介绍andriod开发过程中的一些界面元素和编程的实现,我将大家走进安卓的XML世界,当然可能会涉及到java代码,当然本文主要是介绍XML文件的界面布局。 那么我们的XML存在哪里呢?很简单,就在资源文件里面,什么?你不知道资源文件是哪个?拜托,打开项目文件,看见res,那么这个文件低下就是我们的资源文件了!哇哦,那么我们在这上面编程吗?NO,我基本上把逻辑都写在src文件

The CnSkyline Blog 685

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android ActivityGroup和TabActiviy的差异性

&lt;script&gt;&lt;/script&gt;标签: android activitygroup tabactiviy 差异性 杂谈 分类: Android技术 &lt;!-- 正文开始 --&gt; 1)  ActivityGroup       根据SDK的解释其功能“A screen that contains and runs mu...

既是过河之卒,惟有奋力向前。 125

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android学习笔记之Tab

今儿任务本是做需求分析,不过一早整完了。留下晚上大片空白时间,干嘛?当然看Android~        原来学的时候,觉得Tab这块学的不是很好,不是很理解,有死记硬背的嫌疑。所以,今晚上就花了些时间看看GoogleDeveloper Guide。 话说,工欲善其事必先利其器;第一步。。。,嘿嘿,先美美的眯一会儿,今儿确实累了。人累了就是睡的香,《国际歌》吼得嘶声裂肺额还是一睁眼就二十分中过

358

Android选项卡TabHost功能和用法

1、选项卡TabHost介绍 TabHost可以方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器大小相同的组件摆放区域 TabHost是一个简单的容器,提供如下两种方法来创建选项卡 newTabSpec(String tag):创建选项卡 addTab(TabHost.TabSpec tabSpec):添加选项卡 使用TabHost有三种方法 2、方法1,继承TabActivi...

钻石 4万+

TabHost的使用理解

翻译为个人理解,有异议可共同讨论;转载须注明出处 ========================================== TabHost class overview

ljinxin的博客 747

具身智能 2026:启元人形机器人开发者生态的“安卓时刻”来了吗

一个贯穿全文的问题:人形机器人开发者生态,是否正从「封闭垂直」走向「开源平台化」?本文以开源底座的公开数据为标尺,盘点 SDK、URDF、仿真与技能分发的开放程度,并落回启元机器人的开源路径。所有关键数据均标注来源,文末附社区与学堂链接。

在北风吹起的时候加入我们的队伍 在秋雨到来的时候成为彼此的温暖 752

android-ad-cleaner:android免 Root 批量关闭系统开屏与营销推送

橘子,计算机视觉方向工程师,深耕 AIGC 与多媒体处理领域,专注技术实用化落地。本文为原创内容,转载请注明来源与作者。优快云 首发 | 版权所有 © 2026。

下载资源或查看教程前,请务必阅读置顶的《免责声明》 532

Android 14 SELinux策略深度解析

init 的全局公开约束(如 neverallow init execute_no_trans,放 public 才能约束所有分区的规则)这就是"哪些可见"的强制机制。alps_s0(MTK 工程)的 device/mediatek/sepolicy/basic/ 提供。所有分区(system/system_ext/product/vendor)都可引用。init的公开约束、跨分区共用的 type/attribute/neverallow。——vendor 的 .cil 只能引用 plat 的。

新时代农民工 103

Android 开发入门实践(二):Kotlin 空安全,从可空类型到安全访问

延续 NewsApp 项目中的新闻标题练习,记录 Kotlin 安全调用。

Easyhood的博客 279

Android 模块化收口:能力组合框架、手写 LifecycleOwner 与热修复共存

二十多个模块业务高度相似却各有差异,核心矛盾在于“统一与灵活”的平衡。通过角色接口组合(如IProjectAware、IVoiceAware)实现能力按需注入,新增功能零侵入;用模板方法锁定生命周期流程,确保顺序一致;结合@CallSuper与工厂方法,既约束关键逻辑,又保留子类自由。最终实现:骨架统一、填空自由,管得住业务,又不侵入业务。

mmsx990的博客 395

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 192

安卓部署Linux性能实测:一颗移动处理器,能否胜任日常 Linux 开发?

本文通过在一加Ace5上部署NimoteCode的ARM64 Linux环境,测试了其在CoreMark、SQLite编译及并行构建中的表现。结果显示,尽管单核性能约2.34GHz,多核扩展比达6.15×,但优化编译耗时仍高达35秒,反映移动处理器虽具备一定开发能力,却受限于文件系统开销与运行环境(如PRoot)。实际开发中,非优化构建效率较高,而并行编译可显著提速。结论:安卓手机可作为轻量级开发辅助工具,但无法替代桌面环境,真正价值在于便携性与即时响应,而非全功能替代。

一个不知名码农的专栏 297
上一篇: 【Android入门】访问Internet权限
下一篇: 【Android入门】防止ANDROID内存泄漏(翻译自Android Developers Blog)
sharpxu1985
博客等级 码龄19年 9粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值