Android UI之Tab(TabActivity+TabHost实现)

Tab标签页是UI设计时经常使用的UI控件,可以实现多个分页之间的快速切换,每个分页可以显示不同的内容。

TabHost相当于浏览器中标签页分布的集合,而Tabspec则相当于浏览器中的每一个分页面。在Android中,每一个TabSpec分布可以是一个组件,也可以是一个布局,然后将每一个分页装入TabHost中,TabHost即可将其中的每一个分页一并显示出来。

使用Tab标签页的一般步骤:

首先要设计所有的分页的界面布局

Activity继承TabActivity

调用TabActivity的getTabHost()方法获得TabHost对象

通过TabHost创建并添加Tab

实例:TabDemo

运行效果:

代码清单:

布局文件:tab.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/view1"
        android:background="@drawable/blue"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="这里是Tab1里的内容。"/>

    <TextView android:id="@+id/view2"
        android:background="@drawable/red"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="这里是Tab2"/>

    <TextView android:id="@+id/view3"
        android:background="@drawable/green"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Tab3"/>

</FrameLayout>

Java源代码文件:MainActivity.java

package com.rainsong.tabdemo;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;

public class MainActivity extends TabActivity
{
    TabHost mTabHost;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        mTabHost = getTabHost();
        LayoutInflater.from(this).inflate(R.layout.tab,
                mTabHost.getTabContentView(), true);
        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1")
                .setContent(R.id.view1));
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab2")
                .setContent(R.id.view2));
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3")
                .setContent(R.id.view3));
    }
}

API知识点

public class

TabActivity

extends ActivityGroup

TabHost  getTabHost()

Returns the TabHost the activity is using to host its tabs.

public abstract class

LayoutInflater

extends Object

Class Overview

Instantiates a layout XML file into its corresponding View objects.

static LayoutInflater  from(Context context)

Obtains the LayoutInflater from the given context.

View  inflate(int resource, ViewGroup root, boolean attachToRoot)

Inflate a new view hierarchy from the specified xml resource.

public class

TabHost

extends FrameLayout

implements ViewTreeObserver.OnTouchModeChangeListener

Known Direct Subclasses

FragmentTabHost

Class Overview

Container for a tabbed window view. This object holds two children: a set of tab labels that the user clicks to select a specific tab, and a FrameLayout object that displays the contents of that page.

FrameLayout  getTabContentView()

Get the FrameLayout which holds tab content

void  addTab(TabHost.TabSpec tabSpec)

Add a tab.

TabHost.TabSpec  newTabSpec(String tag)

Get a new TabHost.TabSpec associated with this tab host.

public class

TabHost.TabSpec

extends Object

Class Overview

A tab has a tab indicator, content, and a tag that is used to keep track of it.

This builder helps choose among these options.

For the tab indicator, your choices are:

1) set a label

2) set a label and an icon

For the tab content, your choices are:

1) the id of a View

2) a TabHost.TabContentFactory that creates the View content.

3) an Intent that launches an Activity.

TabHost.TabSpec  setIndicator(CharSequence label)

Specify a label as the tab indicator.

TabHost.TabSpec  setContent(int viewId)

Specify the id of the view that should be used as the content of the tab.

时间: 2024-08-26 09:44:25

Android UI之Tab(TabActivity+TabHost实现)的相关文章

Android UI之Tab(ActionBar+Fragment实现)

Fragment和ActionBar都是Android3.0之后出现的,Fragment,碎片,主要是为了支持更多的UI设计在大屏幕设备上,如平板.因为现在设备的屏幕越来越大,使用Fragment可以更灵活的管理视图层次的变化.像Activity一样,可以创建Fragment来包含View,进行布局,但是Fragment必须嵌入在Activity中,不能单独存在,而且一个Activity可以嵌入多个Fragment,同时一个Fragment可以被多个Activity重用.Action Bar被认

Android UI 之 Tab类型界面总结

Android 程序中实现Tab类型界面很常见,本人在做项目的时候也经常用到,所以想在这里总结一下,实现tab类型界面的几种方式,供大家参考.如有不对之处,欢迎大家指正! 一.TabActivity + TabWidget + TabHost. 实现TAB类型界面,首先想到的就是这种方式.但是在API level 13之后官方就不建议使用它了.不过还是在这里简单说一下它的使用吧. 使用它的关键就是布局文件了.需要在布局中添加<TabHost>.<TabWidget>.<Fra

【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8989063       从这一篇文章开始,我们将进入到一个应用程序主界面UI的开发和设计中了,底部菜单栏在Android的应用开发当中占有非常重要的地位.几乎所有的手机应用程序都有底部菜单栏这样的控件,主要是因为手机的屏幕大小有限,这样一种底部菜单栏实现起来的效果可以很方便的为用户切换自己所需要的界面,具有更强的交互性.底部菜单栏的样式和效果也是五花八门,多的数不胜数,但是

Android Tab与TabHost

这就是Tab,而盛放Tab的容器就是TabHost 如何实现?? 每一个Tab还对应了一个布局,这个就有点好玩了.一个Activity,对应了多个功能布局. ①新建一个Tab项目,注意,不要生成main Activity 这里不要选 ②在包里面新建一个类MyTab,继承于TabActivity 其实,TabActivity是Activity的子类 package zyf.tab.test; import android.app.TabActivity; public class MyTab ex

【Android UI设计与开发】第11期:顶部标题栏(二)ActionBar实现Tab选项卡和下拉导航列表

转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9050573  在上一篇文章中,我们只是大概的了解了一下关于ActionBar这个类的简单用法,今天我会继续以实例进行更加深入的讲解. 一.实现Tab选项标签 当你想要在一个Activity中提供Tab选项卡时,使用ActionBar的Tab选项标签是一个非常好的选择(而不是使用TabWidget类),因为系统会调整ActionBar的选项标签来适应不同尺寸的屏幕的需要,比如

Android开发之自己定义TabHost文字及背景(源码分享)

使用TabHost 能够在一个屏幕间进行不同版面的切换,而系统自带的tabhost界面较为朴素,我们应该怎样进行自己定义改动优化呢 MainActivity的源码 package com.dream.ledong; import android.app.TabActivity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Gr

【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义&#183;详解

原文地址:http://www.cnblogs.com/yc-755909659/p/4290784.html 一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和menu,在程序运行中一直置于顶部,对于Android平板设备来说屏幕更大它的标题使用Action Bar来设计可以展示更多丰富的内容,方便操控. 二.ActionBar的功能 用图的方式来讲解

【Android UI设计与开发】顶部标题栏(一)ActionBar 奥义&#183;详解

转自:http://www.cnblogs.com/yc-755909659/p/4290784.html 一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和menu,在程序运行中一直置于顶部,对于Android平板设备来说屏幕更大它的标题使用Action Bar来设计可以展示更多丰富的内容,方便操控. 二.ActionBar的功能 用图的方式来讲解它的

Android:简单实现ViewPager+TabHost+TabWidget实现导航栏导航和滑动切换

viewPager是v4包里的一个组件,可以实现滑动显示多个界面. android也为viewPager提供了一个adapter,此adapter最少要重写4个方法: public int getCount() public boolean isViewFromObject(View view, Object o) public void destroyItem(ViewGroup container, int position, Object object)  public Object in