选项卡TabHost

1.布局

 1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/tabHost"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" >
 6
 7     <LinearLayout
 8         android:id="@+id/tab1"
 9         android:layout_width="match_parent"
10         android:layout_height="match_parent"
11         android:orientation="vertical"
12         tools:context=".AndroidTabHostActivity" >
13
14         <TextView
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:layout_centerHorizontal="true"
18             android:layout_centerVertical="true"
19             android:text="第一个" />
20     </LinearLayout>
21
22     <LinearLayout
23         android:id="@+id/tab2"
24         android:layout_width="match_parent"
25         android:layout_height="match_parent"
26         android:orientation="vertical"
27         tools:context=".AndroidTabHostActivity" >
28
29         <TextView
30             android:layout_width="wrap_content"
31             android:layout_height="wrap_content"
32             android:layout_centerHorizontal="true"
33             android:layout_centerVertical="true"
34             android:text="第二个" />
35     </LinearLayout>
36
37     <LinearLayout
38         android:id="@+id/tab3"
39         android:layout_width="match_parent"
40         android:layout_height="match_parent"
41         android:orientation="vertical"
42         tools:context=".AndroidTabHostActivity" >
43
44         <TextView
45             android:layout_width="wrap_content"
46             android:layout_height="wrap_content"
47             android:layout_centerHorizontal="true"
48             android:layout_centerVertical="true"
49             android:text="第三个" />
50     </LinearLayout>
51
52 </TabHost>

2.逻辑控制

 1 package com.example.androidtabhost;
 2
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.app.TabActivity;
 6 import android.view.LayoutInflater;
 7 import android.view.Menu;
 8 import android.widget.TabHost;
 9
10 public class AndroidTabHostActivity extends TabActivity {
11 //注意:extends TabActivity
12     @Override
13     protected void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         //setContentView(R.layout.activity_android_tab_host);
16         TabHost tabHost=getTabHost();//(TabHost)this.findViewById(R.id.tabHost);
17         //设置TabHost布局
18         LayoutInflater.from(this).inflate(R.layout.activity_android_tab_host,tabHost.getTabContentView(),true);
19         //添加第一个标签页
20         tabHost.addTab(tabHost.newTabSpec("tab01").setIndicator("已接电话").setContent(R.id.tab1));
21         //添加第2个标签页
22         tabHost.addTab(tabHost.newTabSpec("tab02").setIndicator("呼出电话",getResources().getDrawable(R.drawable.sj)).setContent(R.id.tab2));
23         //添加第3个标签页
24         tabHost.addTab(tabHost.newTabSpec("tab03").setIndicator("未接电话").setContent(R.id.tab3));
25
26     }
27
28     @Override
29     public boolean onCreateOptionsMenu(Menu menu) {
30         // Inflate the menu; this adds items to the action bar if it is present.
31         getMenuInflater().inflate(R.menu.activity_android_tab_host, menu);
32         return true;
33     }
34
35 }

TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout。TabWidget就是每个tab的标签,FrameLayout则是tab内容

TabHost的二种实现方式:
第一种:继承TabActivity

1、如果我们使用extendsTabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost
2、TabWidget必须设置android:id为@android:id/tabs
3、FrameLayout需要设置android:id为@android:id/tabcontent

第二种:只是单纯的继承Activity类

布局文件  和上面一样 只是TabHost 的id 换为

tabHost = (TabHost)findViewById(R.id.m_tabhost);
      //如果通过findViewById得到TabHost一定要调用 TabHost.setup();
      LocalActivityManagerlocalAcManager = new LocalActivityManager(MainActivity.this,true);
      localAcManager.dispatchCreate(savedInstanceState);
       tabHost.setup(localAcManager);

还可以自定义标签,将TabWidget android:visibility="gone" 然后自己弄些控件替代

 

另一实现自定义底部菜单

布局文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"
 3   xmlns:android="http://schemas.android.com/apk/res/android">
 4     <LinearLayout
 5         android:orientation="vertical"
 6         android:layout_width="fill_parent"
 7         android:layout_height="fill_parent">
 8         <FrameLayout
 9             android:id="@android:id/tabcontent"
10             android:layout_width="fill_parent"
11             android:layout_height="0.0dip"
12             android:layout_weight="1.0" />
13         <TabWidget
14             android:id="@android:id/tabs"
15             android:visibility="gone"
16             android:layout_width="fill_parent"
17             android:layout_height="wrap_content"
18             android:layout_weight="0.0" />
19         <RadioGroup
20             android:gravity="center_vertical"
21             android:layout_gravity="bottom"
22             android:orientation="horizontal"
23             android:id="@+id/main_radio"
24             android:background="@drawable/maintab_toolbar_bg"
25             android:layout_width="fill_parent"
26             android:layout_height="wrap_content">
27             <RadioButton
28                 android:id="@+id/radio_button0"
29                 android:tag="radio_button0"
30                 android:layout_marginTop="2.0dip"
31                 android:text="@string/alarm"
32                 android:drawableTop="@drawable/icon_1"
33                 style="@style/main_tab_bottom" />
34             <RadioButton
35                 android:id="@+id/radio_button1"
36                 android:tag="radio_button1"
37                 android:layout_marginTop="2.0dip"
38                 android:text="@string/message"
39                 android:drawableTop="@drawable/icon_2"
40                 style="@style/main_tab_bottom" />
41             <RadioButton
42                 android:id="@+id/radio_button2"
43                 android:tag="radio_button2"
44                 android:layout_marginTop="2.0dip"
45                 android:text="@string/photo"
46                 android:drawableTop="@drawable/icon_3"
47                 style="@style/main_tab_bottom" />
48             <RadioButton
49                 android:id="@+id/radio_button3"
50                 android:tag="radio_button3"
51                 android:layout_marginTop="2.0dip"
52                 android:text="@string/music"
53                 android:drawableTop="@drawable/icon_4"
54                 style="@style/main_tab_bottom" />
55             <RadioButton
56                 android:id="@+id/radio_button4"
57                 android:tag="radio_button4"
58                 android:layout_marginTop="2.0dip"
59                 android:text="@string/setting"
60                 android:drawableTop="@drawable/icon_5"
61                 style="@style/main_tab_bottom" />
62         </RadioGroup>
63     </LinearLayout>
64 </TabHost>  

隐藏了系统默认的Widget,取而代之的是带有图片的Button

java

 1 package com.iteye.androidtoast;
 2
 3 import android.app.TabActivity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.widget.RadioGroup;
 7 import android.widget.RadioGroup.OnCheckedChangeListener;
 8 import android.widget.TabHost;
 9
10 public class MainActivity extends TabActivity implements OnCheckedChangeListener{
11     /** Called when the activity is first created. */
12     private TabHost mHost;
13     private RadioGroup radioderGroup;
14     @Override
15     public void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.maintabs);
18         //实例化TabHost
19         mHost=this.getTabHost();
20
21         //添加选项卡
22         mHost.addTab(mHost.newTabSpec("ONE").setIndicator("ONE")
23                     .setContent(new Intent(this,OneActivity.class)));
24         mHost.addTab(mHost.newTabSpec("TWO").setIndicator("TWO")
25                 .setContent(new Intent(this,TwoActivity.class)));
26         mHost.addTab(mHost.newTabSpec("THREE").setIndicator("THREE")
27                 .setContent(new Intent(this,ThreeActivity.class)));
28         mHost.addTab(mHost.newTabSpec("FOUR").setIndicator("FOUR")
29                 .setContent(new Intent(this,FourActivity.class)));
30         mHost.addTab(mHost.newTabSpec("FIVE").setIndicator("FIVE")
31                 .setContent(new Intent(this,FiveActivity.class)));
32
33         radioderGroup = (RadioGroup) findViewById(R.id.main_radio);
34         radioderGroup.setOnCheckedChangeListener(this);
35     }
36     @Override
37     public void onCheckedChanged(RadioGroup group, int checkedId) {
38         switch(checkedId){
39         case R.id.radio_button0:
40             mHost.setCurrentTabByTag("ONE");
41             break;
42         case R.id.radio_button1:
43             mHost.setCurrentTabByTag("TWO");
44             break;
45         case R.id.radio_button2:
46             mHost.setCurrentTabByTag("THREE");
47             break;
48         case R.id.radio_button3:
49             mHost.setCurrentTabByTag("FOUR");
50             break;
51         case R.id.radio_button4:
52             mHost.setCurrentTabByTag("FIVE");
53             break;
54         }
55     }
56 }  

 

 

时间: 2024-10-11 16:07:24

选项卡TabHost的相关文章

Android学习笔记(30):选项卡TabHost

TabHost组件是可以在界面中存放多个选项卡的容器,选项卡大小与外部容器相同. TabWidget 组件就是TabHost的标题条,单击可以切换选项卡. TabSpec组件就是一个选项卡(Tab页面).   TabHost的使用步骤如下: 1.在XML文件中定义一个TabHost组件,并在其中定义一个FrameLayout.在其中添加内容. 2.Activity应该继承自TabActivity. 3.调用TabActivity的getTabHost()方法获取TabHost对象. 4.通过Ta

我的Android进阶之旅------&amp;gt;Android之选项卡(TabHost)的功能和用法

简介       下面通过一个实例来学习TabHost,在此对上一篇  Android之拖动条(SeekBar和RatingBar)的功能和用法 使用的项目进行优化,使用TabHost使界面看起来更加友好. step1:新建一个项目MyTabHost step2:设计应用的UI界面    /layout/tabhost.xml <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android

android 选项卡(TabHost)如何放置在屏幕的底部_Android

今天写Tab的时候由于TAB的跳转问题去查资料,倒反而发现更有趣的问题,就是如何将TAB放置在屏幕的底端. 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" a

android 选项卡(TabHost)如何放置在屏幕的底部

今天写Tab的时候由于TAB的跳转问题去查资料,倒反而发现更有趣的问题,就是如何将TAB放置在屏幕的底端. 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" a

Android零基础入门第64节:揭开RecyclerView庐山真面目

原文:Android零基础入门第64节:揭开RecyclerView庐山真面目    大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧.那么本期一起来学习Android 5.X新增的一个列表组件,那就是RecyclerView的使用.     一.RecyclerView概述       从前面的学习我们知道,ListView的功能非常强大,几乎绝大部分应用程序都会使用到,虽然也学会一些方法技巧来提升ListView的效率,但其性能

API Demos 2.3 学习笔记 (17)-- Views-&amp;gt;Tabs

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> Tab与TabHost应用很广泛.打开android手机的默认电话拨号程序,上面就是由"拨号","通话记录","通讯录"以及"收藏"四个选项卡组成的. TabHost有两种实现方式,一种是继承TabActivity,另一种是自己定义TabHost,不继承TabActivity.APIDemo中的三个实例都是第一种.想了解TabHost的第二种实现方

Android开发学习清单

目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 下载和安装Android SDK1.2.2 安装Eclipse和ADT插件1.3 Android常用开发工具的用法1.3.1 创建.删除和浏览AVD1.3.2 使用Android模拟器(Emulator)1.3.3 使用DDMS进行调试android调试输出1.3.4 Android Debug

自定义TabHost实现背景图片随选项卡切换滑动效果

http://download.csdn.net/detail/hfsu0419/4137990 本例子是对TabHost组件的自定义,实现标签居底显示:每个标签包含图片和文字. 布局文件 [html] view plaincopyprint? <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/

android 监听返回键怎么从activity 跳转到tabhost主页且选项卡不消失?

问题描述 android 监听返回键怎么从activity 跳转到tabhost主页且选项卡不消失? 我用activity 和tabhost配套使用,当监听返回键时跳转到tabhost主页,发现选项卡消失,不只是为什么?求各位大神解答?谢谢! 解决方案 那要看你点击返回键的函数里面是怎么跳转的