TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情,FrameLayout是Tab内容。

实现方式有两种:

1、继承TabActivity

2、继承Activity类

>>两个方法实例下载

方法一:继承TabActivity

从TabActivity中用getTabHost()方法获取TabHost,然后设置标签内容

布局:

1、TabHost    必须设置android:id为@android:id/tabhost
2、TabWidget   必须设置android:id为@android:id/tabs
3、FrameLayout  必须设置android:id为@android:id/tabcontent

否则将出现类似报错:

<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" android:id="@android:id/tabhost"     >    <LinearLayout     android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >        <TabWidget         android:layout_width="match_parent"        android:layout_height="wrap_content" android:id="@android:id/tabs"        ></TabWidget>        <FrameLayout         android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" android:id="@android:id/tabcontent"        >        <LinearLayout             android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/widget_layout_red"            android:background="#ff0000"            android:orientation="vertical"            ></LinearLayout>                 <LinearLayout             android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/widget_layout_yellow"            android:background="#FCD209"            android:orientation="vertical"            ></LinearLayout>            </FrameLayout></LinearLayout></TabHost>

继承TabActivity

public class MainActivity extends TabActivity {private TabHost tabhost;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.demo);                //从TabActivity上面获取放置Tab的TabHost        tabhost = getTabHost();        tabhost.addTab(tabhost                 //创建新标签one                .newTabSpec("one")                //设置标签标题                .setIndicator("红色")                //设置该标签的布局内容                .setContent(R.id.widget_layout_red));        tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow));    }}

其中创建标签的方法:

 tabhost.addTab(tabhost .newTabSpec("one") .setIndicator("红色") .setContent(R.id.widget_layout_red));

也可以拆分写成:

 TabHost.TabSpec tab1 = tabhost.newTabSpec("one"); tab1.setIndicator("红色"); tab1.setContent(R.id.widget_layout_red);        tabhost.addTab(tab1);

预览:

点击"黄色"标签

点击"红色"标签

方法二:继承Activity类

布局:

1、TabHost    可自定义id
2、TabWidget   必须设置android:id为@android:id/tabs
3、FrameLayout  必须设置android:id为@android:id/tabcontent

public class MainActivity extends Activity{private TabHost tabhost;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.demo);                //得到TabHost对象实例        tabhost =(TabHost) findViewById(R.id.mytab);        //调用 TabHost.setup()        tabhost.setup();        //创建Tab标签        tabhost.addTab(tabhost.newTabSpec("one").setIndicator("红色").setContent(R.id.widget_layout_red));        tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow));        }}

注意的是:

在使用TabHost切换activity时出现Did you forget to call 'public void setup..

改用第一种方法吧

其他实例:

Android:布局实例之模仿微信Tab

更多相关文章

  1. android TextInputLayout
  2. Android基于AudioManager、PhoneStateListener实现设置黑名单功
  3. 沉浸式状态栏
  4. Android顶部导航之TabLayout和ViewPager的组合,setupWithViewPage
  5. (转)android GPS
  6. SDK大全2的读书笔记
  7. Androidz之clickable
  8. Android(java)学习笔记84:自定义异常类
  9. Android(安卓)实现绚丽多彩的TextView

随机推荐

  1. Android触屏事件传递(个人实践总结)
  2. Android分区介绍及fastboot刷机教程
  3. Android(安卓)自定义UI
  4. android使用磁场传感器和加速度传感器确
  5. Android(安卓)中的字体大小适配
  6. 如何在eclipse的android工程中添加外部ja
  7. Android(安卓)9 Pie新动态
  8. 唠唠培训,本人培训出身
  9. Android常见面试题&字节跳动、阿里、腾讯
  10. Android(安卓)限制textview Edittext 只