【Android 应用开发】Android - TabHost 选项卡功能用法详解
TabHost效果图 :
.
作者 :万境绝尘
转载请注明出处 : 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 选项卡功能用法详解相关推荐
- android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...
Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...
- Android 应用开发(41)---EditText(输入框)详解
EditText(输入框)详解 1.设置默认提示文本 如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面 相比另外这种,下面这种又如何? 还不赖是吧,当然,不会在这里贴布局 ...
- Android组件之Service 与常用系统服务用法详解
一.服务 1.1.后台运行.不可见.没有界面,优先级高于activity,主要用于组件之间交互和执行后台任务.同样在主线程中运行,不能做耗时操作,超过20S会出现ANR. 1.2. 本地服务Local ...
- 公交线路换乘代码PHP,微信开发之公交换乘功能代码详解
1)API申请 2)API调用 3)[b]效果展示[/b] 4)精准查询 --------------------------------------------------------------- ...
- android 自定义多tab悬浮控件,Android编程实现自定义Tab选项卡功能示例
本文实例讲述了Android编程实现自定义Tab选项卡功能.分享给大家供大家参考,具体如下: import android.app.TabActivity; import android.conten ...
- android仿支付提现功能,Android应用开发Android 仿微信支付密码界面
本文将带你了解Android应用开发Android 仿微信支付密码界面,希望本文对大家学Android有所帮助. 使用 Bundle bundle = new Bundle(); bundle.put ...
- android butterknife 自定义view,ButterKnife用法详解.md
# ButterKnife用法详解 ### 如何成为T型人才,垂直在一个行业中,必须要有一整套[知识体系](https://github.com/WeiSmart/Android-Advanced-C ...
- android默认exported_Android android:exported = true 用法详解
Android android:exported = true 用法详解 Android相关属性的介绍:android:exported = true 在Activity中该属性用来标示:当前Acti ...
- android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...
本文将带你了解Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...
最新文章
- [转]一个总成本花费100W的失败项目的小小反省
- iPhone中的heic格式怎么查看,heic文件怎么打开
- swap(a,b)值交换的4种方法
- 半年时间能学会php吗_4个月真的能学会PHP吗
- html5 audio api 录音,如何使用HTML5 Web Audio API录制我的声音
- Python程序-打印单词的菱形字符图案
- php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析
- 如何对xgboost模型进行优化
- $.post 提交文件_PHP表单提交
- echarts 折线图 中有两条线 ,在鼠标悬停时显示数据
- 北京大学冬令营(PKUWC2018)总结
- 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
- html标签(段落标签,换行标签,文本格式化标签和局部标签)-小白学习中
- 测试Java测试Java测试Java
- 网络变压器通频带、网络变压器插入损耗及矩形脉冲失真的关系
- matlab各个指令的含义,matlab的常用指令及其含义
- ios共享账号公众号_forest 专注森林 ios下载账号分享 公众号 iphone ipad
- EtherCAT源代码分析(1)
- LeetCode #69 x的平方根 二分查找
- python登陆成功页面跳转_模拟登陆后如何获取跳转的网页?