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

简介: 【Android 应用开发】Android - TabHost 选项卡功能用法详解

TabHost效果图 :

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

image.pngimage.png一. 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 视图对象;


示例 :



<TabHost
    android: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 {
  @Override
  protected 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);
  }
}
目录
相关文章
|
2月前
|
存储 XML 开发工具
探索安卓应用开发:从基础到进阶
在这篇文章中,我们将一起踏上安卓应用开发的旅程。不论你是编程新手还是希望提升技能的开发者,这里都有你需要的东西。我们会从最基础的概念开始,逐步深入到更复杂的主题。文章将涵盖开发环境设置、用户界面设计、数据处理以及性能优化等方面。通过理论与实践的结合,你将能够构建出既美观又高效的安卓应用。让我们一起开启这段技术之旅吧!
|
2月前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
1月前
|
搜索推荐 Android开发 开发者
安卓应用开发中的自定义控件实践
在安卓应用开发的广阔天地中,自定义控件如同璀璨的星辰,点亮了用户界面设计的夜空。它们不仅丰富了交互体验,更赋予了应用独特的个性。本文将带你领略自定义控件的魅力,从基础概念到实际应用,一步步揭示其背后的原理与技术细节。我们将通过一个简单的例子——打造一个具有独特动画效果的按钮,来展现自定义控件的强大功能和灵活性。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往更高阶UI设计的大门。
|
2月前
|
缓存 监控 前端开发
探索Android应用开发之旅:从新手到专家
【10月更文挑战第42天】本文将带你踏上Android应用开发的旅程,无论你是初学者还是有经验的开发者。我们将一起探索如何从零开始创建你的第一个Android应用,并逐步深入到更高级的主题,如自定义视图、网络编程和性能优化。通过实际示例和清晰的解释,你将学会如何构建高效、吸引人的Android应用。让我们一起开启这段激动人心的旅程吧!
|
2月前
|
开发框架 前端开发 Android开发
探索安卓和iOS应用开发中的跨平台解决方案
【10月更文挑战第42天】在移动应用开发的广阔天地中,安卓和iOS系统如同两座巍峨的山峰,分别占据着半壁江山。开发者们在这两座山峰之间穿梭,努力寻找一种既能节省资源又能提高效率的跨平台开发方案。本文将带你走进跨平台开发的世界,探讨各种解决方案的优势与局限,并分享一些实用的代码示例,助你在应用开发的道路上更加游刃有余。
|
2月前
|
搜索推荐 前端开发 Android开发
安卓应用开发中的自定义视图实现
【10月更文挑战第30天】在安卓开发的海洋中,自定义视图是那抹不可或缺的亮色,它为应用界面的个性化和交互体验的提升提供了无限可能。本文将深入探讨如何在安卓平台创建自定义视图,并展示如何通过代码实现这一过程。我们将从基础出发,逐步引导你理解自定义视图的核心概念,然后通过一个实际的代码示例,详细讲解如何将理论应用于实践,最终实现一个美观且具有良好用户体验的自定义控件。无论你是想提高自己的开发技能,还是仅仅出于对安卓开发的兴趣,这篇文章都将为你提供价值。
|
2月前
|
传感器 XML IDE
探索安卓应用开发:从基础到进阶
【10月更文挑战第23天】在数字化时代的浪潮中,移动应用已成为人们日常生活的延伸。本文以安卓平台为例,深入浅出地介绍了如何从零开始构建一个安卓应用,涵盖了开发环境搭建、基本组件使用、界面设计原则以及进阶技巧等关键步骤。通过实例演示和代码片段,引导读者逐步掌握安卓应用开发的核心技能,旨在激发更多开发者对安卓平台的探索热情,并为初学者提供一条清晰的学习路径。
|
2月前
|
Android开发 Swift iOS开发
探索iOS与安卓应用开发的差异性
探索iOS与安卓应用开发的差异性
53 2
|
2月前
|
前端开发 Android开发 UED
安卓应用开发中的自定义控件实践
【10月更文挑战第35天】在移动应用开发中,自定义控件是提升用户体验、增强界面表现力的重要手段。本文将通过一个安卓自定义控件的创建过程,展示如何从零开始构建一个具有交互功能的自定义视图。我们将探索关键概念和步骤,包括继承View类、处理测量与布局、绘制以及事件处理。最终,我们将实现一个简单的圆形进度条,并分析其性能优化。
|
2月前
|
开发工具 Android开发 Swift
探索iOS与安卓应用开发的异同点
【10月更文挑战第24天】本文通过比较iOS和安卓开发环境,旨在揭示两大移动平台在开发过程中的相似性与差异性。我们将探讨开发工具、编程语言、用户界面设计、性能优化及市场分布等方面,以期为开发者提供全面的视角。通过深入浅出的分析,文章将帮助读者更好地理解每个平台的独特之处及其对应用开发的影响。