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         <TextView15             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     <LinearLayout23         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         <TextView30             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     <LinearLayout38         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         <TextView45             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 TabActivity12     @Override13     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     @Override29     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

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 }  

选项卡TabHost

更多相关文章

  1. Android实现屏幕截图并保存截图到指定文件
  2. Android 中读取SD卡文件时抛出NullPointerException错误解决办法
  3. android中获取一个xml布局中一个控件的宽高.
  4. Android media媒体库分析之:分类别统计媒体文件大小
  5. android文件处理
  6. Android复制Assets目录下的文件到指定目录
  7. Gradle导入so文件

随机推荐

  1. MySQL8.0.23版本的root密码重置最优解法
  2. MySQL中查询json格式的字段实例详解
  3. 一台linux主机启动多个MySQL数据库的方法
  4. MySQL如何从不固定位置提取字符串元素详
  5. MySQL双主(主主)架构配置方案
  6. 详解MySQL实时同步到Oracle解决方案
  7. SQL group by去重复且按照其他字段排序的
  8. MYSQL大量写入问题优化详解
  9. mysql日志系统的简单使用教程
  10. win10下安装mysql8.0.23 及 “服务没有响