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 }
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有