Android开发之TabActivity用法实例详解
作者:炫_愛羊 发布时间:2022-08-09 00:09:03
本文实例讲述了Android开发之TabActivity用法。分享给大家供大家参考,具体如下:
一.简介
TabActivity继承自Activity,目的是让同一界面容纳更多的内容。TabActivity实现标签页的功能,通过导航栏对各个页面进行管理。
二.XML布局文件
注意:
1.TabActivity的布局文件要求以TabHost作为XML布局文件的根。
2.通常我们采用线性布局,所以<TabHost> 的子元素是 <LinearLayout>。
3.<TabWidget>对应Tab
<FrameLayout>则用于包含Tab需要展示的内容
需要注意的是<TabWidget> 和<FrameLayout>的Id 必须使用系统id,分别为android:id/tabs 和 android:id/tabcontent 。
因为系统会使用者两个id来初始化TabHost的两个实例变量(mTabWidget 和 mTabContent)。
4.代码示例
<?xml version="1.0" encoding="utf-8"?>
<TabHost android:id="@android:id/tabhost"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
</TabHost>
三.TabActivity
1.TabHost:TabHost是Tab的载体,用来管理Tab。
2.TabHost的一些函数
(1)获取
TabHost tabHost=this.getTabHost();
(2) 创建TabHost.TabSpec
public TabHost.TabSpec newTabSpec (String tag)
(3)添加tab
public void addTab (TabHost.TabSpec tabSpec)
(4)remove所有的Tabs
public void clearAllTabs ()
public int getCurrentTab ()
(5) 设置当前的Tab (by index)
public void setCurrentTab (int index)
(6) 设置当前的(Tab by tag)
public void setCurrentTabByTag (String tag)
(7)设置TabChanged事件的响应处理
public void setOnTabChangedListener (TabHost.OnTabChangeListener l)
3.TabHost.TabSpec要设置tab的label和content,需要设置TabHost.TabSpec类。TabHost.TabSpec管理:
public String getTag ()
public TabHost.TabSpec setContent
public TabHost.TabSpec setIndicator
(1)Indicator这里的Indicator 就是Tab上的label,它可以
设置label :
setIndicator (CharSequence label)
设置label和icon :
setIndicator (CharSequence label, Drawable icon)
指定某个view :
setIndicator (View view)
(2)Content对于Content ,就是Tab里面的内容,可以
设置View的id :
setContent(int viewId)
用new Intent 来引入其他Activity的内容:setContent(Intent intent)
package com.zhanglong.music;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TabHost;
public class MainActivity extends TabActivity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, ListActivity.class);
spec = tabHost.newTabSpec("音乐").setIndicator("音乐",
res.getDrawable(R.drawable.item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, ArtistsActivity.class);
spec = tabHost.newTabSpec("艺术家").setIndicator("艺术家",
res.getDrawable(R.drawable.artist))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, AlbumsActivity.class);
spec = tabHost.newTabSpec("专辑").setIndicator("专辑",
res.getDrawable(R.drawable.album))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SongsActivity.class);
spec = tabHost.newTabSpec("最近播放").setIndicator("最近播放",
res.getDrawable(R.drawable.album))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- 1.application.yml中添加两个datasourceserver: port: 8080spring: application:
- 什么是程序集?1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合。2.程序集是组件复用,以及实施安全策略和版
- 可以给已有实体类动态的添加字段并返回新的实体对象,不影响原来的实体对象结构。添加依赖<dependency> &n
- C语言实现矩阵翻转 上下翻转与左右翻转实例代码:#include <stdio.h> void matrix (int m, i
- AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文
- 本文介绍如何在使用C#开发WinForm程序时,获取程序文件的物理路径。这个物理路径可以用于定位程序所在的目录,从而进行日志创建等扩展操作。
- 前言日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓
- .net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知
- 使用ExecutorService来停止线程服务之前的文章中我们提到了ExecutorService可以使用shutdown和shutdow
- 背景在Spring boot项目开发中经常遇到需要使用枚举的场景,比如描述状态、性别、类型等相关字段。通常这些字段在数据库会以tinyint
- 我们知道,使用nginx作为文件下载服务器,可以极大地降低对后端Java服务器的负载冲击,但是nginx本身并不提供授权控制,因此好的方案是
- 注意我这里用的是官方最稳定的版本3.7.1,版本之间有个别命令是有差距的!1.zkCli.sh客户端zkCli.sh可以理解成客户端,也可以
- 一、概念定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的。
- 本文将在C#中Socket同步通信的基础上,分析和研究Socket异步编程的实现方法,目的是深入了解Socket编程的基本原理,增强对网络游
- 本文实例为大家分享了Android检测手机多点触摸点数的具体代码,供大家参考,具体内容如下说明:手指每点击一个地方,在那个地方就画一个圆第一
- 即只能在组件布局代码后,或者在组件的前面添加注释。#注释格式:Android的XML文件注释一般采用 <!--注释内容 -->的
- 本文为大家介绍了java图片添加水印实例代码,java实现水印还是非常方便的,水印可以是图片或者文字,具体内容如下package micha
- 场景:在学习JDBC的语言中,每次都执行通用的几步:即注册驱动,获取连接,创建操作,处理结果,释放资源 过于复杂,因此不妨将上述步骤封装成工
- AsyncContextAsyncContext是Servlet 3.0使Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响
- 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对