TabHost效果图 :

源码下载地址 : http://download.csdn.net/detail/han1202012/6845105

      

.

作者 :万境绝尘 

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18233209

.

一. TabHost介绍

TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计;

1. TabHost常用组件

TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡;

TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中;

-- 创建选项卡 : newTabSpec(String tag), 创建一个选项卡;

-- 添加选项卡 : addTab(tabSpec);

2. TabHost使用步骤

a. 定义布局 : 在XML文件中使用TabHost组件, 并在其中定义一个FrameLayout选项卡内容;

b. 继承TabActivity : 显示选项卡组件的Activity继承TabActivity;

c. 获取组件 : 通过调用getTabHost()方法, 获取TabHost对象;

d. 创建添加选项卡 : 通过TabHost创建添加选项卡;

3. 将按钮放到下面

布局文件中TabWidget代表的就是选项卡按钮, Fragement组件代表内容;

设置失败情况 : 如果Fragement组件没有设置 android:layout_weight属性, 那么将TabWidget放到下面, 可能不会显示按钮;

设置权重 : 设置了Fragment组件的权重之后, 就可以成功显示该选项卡按钮;

二. TabHost布局文件

1. 根标签及id

设置Android自带id : XML布局文件中, 可以使用<TabHost> 标签设置, 其中的id 需要引用 android的自带id : android:id="@android:id/tabhost" ;

getHost()获取前提 : 设置了该id之后, 在Activity界面可以使用 getHost(), 获取这个TabHost 视图对象;

示例 :

<TabHostandroid:id="@android:id/tabhost"android:layout_width="match_parent"android:layout_height="match_parent" >

2. TabWidget组件

选项卡切换 : 该组件是选项卡切换按钮, 通过点击该组件可以切换选项卡;

设置android自带id : 这个组件的id要设置成android的自带id : android:id="@android:id/tabs" ;

TabHost必备组件 : 该组件与FrameLayout组件是TabHost组件中必备的两个组件;

切换按钮下方显示 : 如果想要将按钮放到下面, 可以将该组件定义在下面, 但是注意,FrameLayout要设置android:layout_widget = "1";

设置TabWidget大小 : 如果想要设置该按钮组件的大小, 可以设置该组件与FrameLayout组件的权重;

示例 :

        <TabWidget android:id="@android:id/tabs"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"/>

3. FrameLayout组件

组件作用 : 该组件中定义的子组件是TabHost中每个页面显示的选项卡, 可以将TabHost选项卡显示的视图定义在其中;

设置android自带id : 这个组件的id要设置成android的自带的id : android:id="@android:id/tabcontent" ;

示例 :

        <FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1">

二. Activity方法

1. 获取TabHost

获取方法 : getHost();

前提 : 调用getHost()方法获取TabHost组件的方法的前提是在布局文件中, 设置了android自带的id android:id="@android:id/tabhost" 才可以;

2. 创建选项卡

创建选项卡 : 调用TabHost组件的newTabHost(tag), 其中的tag是字符串, 即在选项卡的唯一标识;

设置选项卡 :

-- 设置按钮名称 : setIndicator("叫兽");

-- 设置选项卡内容 : setContent(), 可以设置视图组件, 可以设置Activity, 也可以设置Fragement;

添加选项卡 : tabHost.add(spec), 传入的参数是创建选项卡的TabSpec对象;

三 代码

XML布局文件 :

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:id="@android:id/tabhost"android:layout_width="match_parent"android:layout_height="match_parent" ><LinearLayout android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TabWidget android:id="@android:id/tabs"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"/><FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1"><LinearLayout android:id="@+id/alwayswet"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ImageView android:scaleType="fitXY"android:layout_height="fill_parent"android:layout_width="fill_parent"android:src="@drawable/alwayswet"/></LinearLayout><LinearLayout android:id="@+id/isanimal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ImageView android:scaleType="fitXY"android:layout_height="fill_parent"android:layout_width="fill_parent"android:src="@drawable/isanimal"/></LinearLayout><LinearLayout android:id="@+id/nezha"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ImageView android:scaleType="fitXY"android:layout_height="fill_parent"android:layout_width="fill_parent"android:src="@drawable/nazha"/></LinearLayout></FrameLayout></LinearLayout></TabHost>

Activity主界面代码 :

package shuliang.han.tabhost_test;import android.app.TabActivity;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;public class MainActivity extends TabActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.tabhost);TabHost tabHost = getTabHost();TabSpec page1 = tabHost.newTabSpec("tab1").setIndicator("叫兽").setContent(R.id.isanimal);tabHost.addTab(page1);TabSpec page2 = tabHost.newTabSpec("tab2").setIndicator("老湿").setContent(R.id.alwayswet);tabHost.addTab(page2);TabSpec page3 = tabHost.newTabSpec("tab3").setIndicator("哪吒").setContent(R.id.nezha);tabHost.addTab(page3);}}

.

作者 :万境绝尘 

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18233209

.

【Android 应用开发】Android - TabHost 选项卡功能用法详解相关推荐

  1. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

    Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...

  2. Android 应用开发(41)---EditText(输入框)详解

    EditText(输入框)详解 1.设置默认提示文本 如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面 相比另外这种,下面这种又如何? 还不赖是吧,当然,不会在这里贴布局 ...

  3. Android组件之Service 与常用系统服务用法详解

    一.服务 1.1.后台运行.不可见.没有界面,优先级高于activity,主要用于组件之间交互和执行后台任务.同样在主线程中运行,不能做耗时操作,超过20S会出现ANR. 1.2. 本地服务Local ...

  4. 公交线路换乘代码PHP,微信开发之公交换乘功能代码详解

    1)API申请 2)API调用 3)[b]效果展示[/b] 4)精准查询 --------------------------------------------------------------- ...

  5. android 自定义多tab悬浮控件,Android编程实现自定义Tab选项卡功能示例

    本文实例讲述了Android编程实现自定义Tab选项卡功能.分享给大家供大家参考,具体如下: import android.app.TabActivity; import android.conten ...

  6. android仿支付提现功能,Android应用开发Android 仿微信支付密码界面

    本文将带你了解Android应用开发Android 仿微信支付密码界面,希望本文对大家学Android有所帮助. 使用 Bundle bundle = new Bundle(); bundle.put ...

  7. android butterknife 自定义view,ButterKnife用法详解.md

    # ButterKnife用法详解 ### 如何成为T型人才,垂直在一个行业中,必须要有一整套[知识体系](https://github.com/WeiSmart/Android-Advanced-C ...

  8. android默认exported_Android android:exported = true 用法详解

    Android android:exported = true 用法详解 Android相关属性的介绍:android:exported = true 在Activity中该属性用来标示:当前Acti ...

  9. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

最新文章

  1. [转]一个总成本花费100W的失败项目的小小反省
  2. iPhone中的heic格式怎么查看,heic文件怎么打开
  3. swap(a,b)值交换的4种方法
  4. 半年时间能学会php吗_4个月真的能学会PHP吗
  5. html5 audio api 录音,如何使用HTML5 Web Audio API录制我的声音
  6. Python程序-打印单词的菱形字符图案
  7. php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析
  8. 如何对xgboost模型进行优化
  9. $.post 提交文件_PHP表单提交
  10. echarts 折线图 中有两条线 ,在鼠标悬停时显示数据
  11. 北京大学冬令营(PKUWC2018)总结
  12. 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
  13. html标签(段落标签,换行标签,文本格式化标签和局部标签)-小白学习中
  14. 测试Java测试Java测试Java
  15. 网络变压器通频带、网络变压器插入损耗及矩形脉冲失真的关系
  16. matlab各个指令的含义,matlab的常用指令及其含义
  17. ios共享账号公众号_forest 专注森林 ios下载账号分享 公众号 iphone ipad
  18. EtherCAT源代码分析(1)
  19. LeetCode #69 x的平方根 二分查找
  20. python登陆成功页面跳转_模拟登陆后如何获取跳转的网页?

热门文章

  1. mysql五大引擎之间的区别和优劣之分
  2. springboot配置cxf
  3. oracle 添加登陆数据库触发器--记录IP 地址
  4. 演化计算简单实例(附代码)
  5. C语言的补码表示和unsigned及signed的转换
  6. Android nDrawer
  7. puppet完全攻略(一)puppet应用原理及安装部署
  8. 数据备份基础之备份类型
  9. 尝试用单元测试做spring注入调用service
  10. 用单循环链表实现约瑟夫问题。