常用控件
7、TabSpec和TabHost
  比较常用的控件,感觉手机QQ的整体布局就是这个,只不过tab放在底部而已。TabSpec相当于浏览器的分页,而TabHost就相当于分页的集合
TabSpec分页可以相当于一个独立的组件,也可以是一个布局,将每个分页装进TabHost里

Activity extends TabActivity
以前都是 继承android.app.Activity
这里为了获得Activity分页菜单,继承它,显然TabActivity和Activity有同个父类。

创建分页菜单对象,将activity_main装进去
tableHost = this.getTabHost();
LayoutInflater.from(this).inflate(R.layout.activity_main,tableHost.getTabContentView());

通过newTabSpec 来创建分页
ts1 = tableHost.newTabSpec("tab1");

设置名称和背景图
ts2.setIndicator("tab2", getResources().getDrawable(R.drawable.bg));

添加组件
ts2.setContent(R.id.et);

通过addtab加进去
tableHost.addTab(ts1);
tableHost.addTab(ts2);
tableHost.addTab(ts3);

设置监听
tableHost.setOnTabChangedListener(this);

arg0 表示传入的tab名称
@Override
public void onTabChanged(String arg0) {
  if (arg0.equals("tab1")) {
    Toast.makeText(this, "分页1", Toast.LENGTH_LONG).show();
  } else if(arg0.equals("tab2")){
    Toast.makeText(this, "分页2", Toast.LENGTH_LONG).show();
  }else if(arg0.equals("tab3")){
    Toast.makeText(this, "分页3", Toast.LENGTH_LONG).show();
  }
}

完整代码和运行效果如下:

 package com.example.tabproject;

 import android.os.Bundle;
import android.app.Activity;
import android.app.TabActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec; public class MainActivity extends TabActivity implements OnTabChangeListener{ private TabSpec ts1,ts2,ts3;
private TabHost tableHost; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); tableHost = this.getTabHost(); LayoutInflater.from(this).inflate(R.layout.activity_main,tableHost.getTabContentView()); ts1 = tableHost.newTabSpec("tab1");
ts1.setIndicator("tab1");
ts1.setContent(R.id.btn); ts2 = tableHost.newTabSpec("tab2");
ts2.setIndicator("tab2", getResources().getDrawable(R.drawable.bg));
ts2.setContent(R.id.et); ts3 = tableHost.newTabSpec("tab3");
ts3.setContent(R.id.layout);
ts3.setIndicator("tab3", getResources().getDrawable(R.drawable.pg2));
ts3.setContent(R.id.et); tableHost.addTab(ts1);
tableHost.addTab(ts2);
tableHost.addTab(ts3); tableHost.setOnTabChangedListener(this); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public void onTabChanged(String arg0) {
// TODO Auto-generated method stub
if (arg0.equals("tab1")) {
Toast.makeText(this, "分页1", Toast.LENGTH_LONG).show();
} else if(arg0.equals("tab2")){
Toast.makeText(this, "分页2", Toast.LENGTH_LONG).show();
}else if(arg0.equals("tab3")){
Toast.makeText(this, "分页3", Toast.LENGTH_LONG).show();
}
} }

关于不同Tab页面的View间如何通信后面再讲。

android学习日记03--常用控件tabSpec/tabHost的更多相关文章

  1. android学习日记03--常用控件button/imagebutton

    常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...

  2. android学习日记03--常用控件Dialog

    常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...

  3. android学习日记03--常用控件checkbox/radiobutton

    常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...

  4. android学习日记03--常用控件ListView

    常用控件 8.ListView 列表视图,比如游戏的排行榜.列表数据可以根据屏幕大小自适应 列表的显示需要三个元素: a.ListVeiw:用来展示列表的View. b.适配器:用来把数据映射到Lis ...

  5. android学习日记03--常用控件progressbar/seekbar

    常用控件 5.progressbar 进度条,比较常用的组件,在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也 ...

  6. Android学习笔记_30_常用控件使用

    一.状态栏通知(Notification): 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息.发送消息的代码如下: public void sendNotice(View v){ int ic ...

  7. Android布局属性与常用控件

    一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重  ...

  8. Android SDK提供的常用控件Widget “常用控件”“Android原生”

    Android提供一个标准的视图工具箱来帮助创建简单的UI界面.通过使用这些控件(必要时,可以对这些控件进行修改). 创建一个简单的.xml文件,从预览窗口可以看到Android SDK提供的原生控件 ...

  9. Android开发UI之常用控件的使用

    1.日期选择控件 DatePickerDialog 代码: btnChooseDate=(Button) findViewById(R.id.btnChooseDate); btnChooseDate ...

随机推荐

  1. bzoj1001

    平面图求最小割: 其实看bzoj1001一开始着实把我怔住了 AC的人暴多,可自己完全没思路 后来看了某大牛的ppt,才会做 一个月前做这题的吧,今天来简单回忆一下: 首先是欧拉公式 如果一个连通的平 ...

  2. acdream 小晴天老师系列——晴天的后花园 (暴力+剪枝)

    小晴天老师系列——晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  3. 【MooTools】

    MooTools a compact javascript frameworkhttp://mootools.net/docs/core 30天学会 MooTools 教学(1): 认识MooTool ...

  4. CSS布局中——导航是非常常见的

    导航绝对是页面布局中最常见的,为了不用每次去写,稍微贴个简单的导航模版出来,方便以后使用. <title>CSS菜单</title> <style type=" ...

  5. HDU 4565 So Easy!

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. 在MFC[转载]在MFC状态栏显示时间 状态栏显示时间

    原文:在MFC状态栏显示时间,谢小哈皮儿 c/c++ vc 在mfc状态栏显示时间,在VC的控件中有个Status bar可以在窗体状态栏中添加日期和时间.其实通过简单的代码,你就能创建一个有时钟显示 ...

  7. PICT实现组合测试用例(二)

    上次简单总结了PICT命令的一些用法,这次重新把<软件测试实战>里面有关这一章的内容再总结一次,以巩固理解. 组合测试的概念 组合测试(combinatorial testing)是一种测 ...

  8. [MySQL-1] mysql error 1101 blob/text column can't have a default value

    在MySQL Query Browser上创建一个含有TEXT类型的字段,创建不成功,报错:mysql error 1101 blob/text column can't have a default ...

  9. Linux 多线程编程--线程退出

    今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖. Valgrind测试无内存泄漏. 内存32G 64bit系统信息如下: Linux线程使用方式是 ...

  10. 把之前写的几个项目放到了github上

    之前有的源码放在我的电脑里不知道什么时候就没了,满满都是回忆啊,怪可惜的. https://github.com/redclock/Adv-Game:一个java游戏 https://github.c ...