Android开发之TabActivity用法实例详解

作者:炫_愛羊 时间:2022-08-09 00:09:03 

本文实例讲述了Android开发之TabActivity用法。分享给大家供大家参考,具体如下:

一.简介

TabActivity继承自Activity,目的是让同一界面容纳更多的内容。TabActivity实现标签页的功能,通过导航栏对各个页面进行管理。

Android开发之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程序设计有所帮助。

标签:Android,TabActivity
0
投稿

猜你喜欢

  • 深入分析JAVA流程控制语句

    2023-11-20 10:48:32
  • 关于Java中修饰符的总结(fina除外)

    2023-11-22 23:15:57
  • Android调用相机并将照片存储到sd卡上实现方法

    2023-11-06 00:41:41
  • Spring实现默认标签解析流程

    2021-07-29 10:07:55
  • c#取得控制台应用程序根目录

    2023-06-16 14:25:44
  • Java多线程ThreadPoolExecutor详解

    2023-11-23 18:39:32
  • C#实现图形区域组合操作的方法

    2023-05-01 19:08:21
  • C# Word 类库的深入理解

    2023-07-21 07:29:09
  • C#实现JSON字符串序列化与反序列化的方法

    2023-12-01 12:40:23
  • 基于私钥加密公钥解密的RSA算法C#实现方法

    2022-12-01 07:52:37
  • Android中的HOOK技术是什么

    2022-06-19 18:18:24
  • 详解如何在Flutter中使用媒体播放器

    2021-06-26 01:40:43
  • 关于@Autowired注入依赖失败的问题及解决

    2023-11-29 00:50:42
  • Android使用xUtils3.0实现文件上传

    2023-08-04 19:50:02
  • Jackson序列化和反序列化忽略字段操作

    2022-08-29 14:01:14
  • C#中登录窗体和欢迎窗体关闭方法分析

    2023-03-23 03:58:25
  • JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    2023-09-17 17:03:59
  • Intellij Idea 多模块Maven工程中模块之间无法相互引用问题

    2023-11-11 07:24:51
  • SpringBoot整合TKMyBatis实现单表增删改查操作

    2022-01-30 19:52:28
  • 使用异步方式调用同步方法(实例详解)

    2023-03-29 16:38:21
  • asp之家 软件编程 m.aspxhome.com