`

TabHost的两种方式

阅读更多
TabHost的实现有两种方式,第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。

mainActivity.xml


private TabHost myTabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
       myTabHost = this.getTabHost();
        LayoutInflater.from(this).inflate(R.layout.main,
                myTabHost.getTabContentView(), true);
        myTabHost.addTab(myTabHost
                .newTabSpec("选项卡1")
                .setIndicator("选项卡1",
                        getResources().getDrawable(R.drawable.img01))
                .setContent(R.id.ll01));
        myTabHost.addTab(myTabHost
                .newTabSpec("选项卡2")
                .setIndicator("选项卡2",
                        getResources().getDrawable(R.drawable.img02))
                .setContent(R.id.ll01));
        myTabHost.addTab(myTabHost
                .newTabSpec("选项卡3")
                .setIndicator("选项卡3",
                        getResources().getDrawable(R.drawable.img03))
                .setContent(R.id.ll03));

    }

Tab内容布局文件:


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:id="@+id/ll01" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="center_horizontal"
        android:orientation="vertical">
        <EditText android:id="@+id/widget34" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:text="EditText"
            android:textSize="18sp">
        </EditText>
        <Button android:id="@+id/widget30" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Button">
        </Button>

    </LinearLayout>
    <LinearLayout android:id="@+id/ll02" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="center_horizontal"
        android:orientation="vertical">
        <AnalogClock android:id="@+id/widget36"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
        </AnalogClock>
    </LinearLayout>
    <LinearLayout android:id="@+id/ll03" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="center_horizontal"
        android:orientation="vertical">
        <RadioGroup android:id="@+id/widget43"
            android:layout_width="166px" android:layout_height="98px"
            android:orientation="vertical">
            <RadioButton android:id="@+id/widget44"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:text="RadioButton">
            </RadioButton>
            <RadioButton android:id="@+id/widget45"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:text="RadioButton">
            </RadioButton>
        </RadioGroup>

    </LinearLayout>
</FrameLayout>






第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/hometabs"
    android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <TabHost android:id="@+id/tabhost"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content">
         <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
           
             <TabWidget android:id="@android:id/tabs"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content">
            </TabWidget>
        
             <FrameLayout android:id="@android:id/tabcontent"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content">
                      <TextView android:id="@+id/view1"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent" android:text="Tab1"/>
                    <TextView android:id="@+id/view2"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent" android:text="Tab2"/>
                    <TextView android:id="@+id/view3"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent" android:text="Tab3"/>
             </FrameLayout>
        
         </LinearLayout>
    </TabHost>
</LinearLayout>

mainActivity


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
        tabHost.setup();
        TabWidget tabWidget = tabHost.getTabWidget();

        tabHost.addTab(tabHost
                .newTabSpec("tab1")
                .setIndicator("tab1",
                        getResources().getDrawable(R.drawable.img01))
                .setContent(R.id.view1));

        tabHost.addTab(tabHost
                .newTabSpec("tab2")
                .setIndicator("tab2",
                        getResources().getDrawable(R.drawable.img02))
                .setContent(R.id.view2));

        tabHost.addTab(tabHost
                .newTabSpec("tab3")
                .setIndicator("tab3",
                        getResources().getDrawable(R.drawable.img03))
                .setContent(R.id.view3));
分享到:
评论

相关推荐

    TabHost两种实现方式

    这篇博客“TabHost两种实现方式”探讨了如何在Android应用中使用TabHost来构建多标签视图。下面我们将深入讨论这两种实现方式及其相关知识点。 首先,我们要理解TabHost的基本概念。TabHost是一个容器,它能容纳一...

    TabHost的两种使用方式

    本篇文章将深入探讨TabHost的两种使用方式:XML布局和编程方式。 一、XML布局方式 1. 创建TabWidget:首先,在布局文件中创建一个TabWidget,它是TabHost中的标签视图。通过`android:id="@android:id/tabs"`来指定...

    TabHost的各种实现方式

    - 在Android 3.0及以上版本,Action Bar提供了一种新的Tab实现方式。虽然现在推荐使用ViewPager配合TabLayout,但了解Action Bar的Tab模式可以帮助理解TabHost的历史演变。 7. **使用第三方库**: - 如`androidx....

    安卓 tabhost嵌套tabhost

    TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而FrameLayout则用来展示被选中选项卡的内容。通过TabSpec对象,我们可以设置每个选项卡的标签和关联的Activity或布局。 ```xml ...

    两种特殊Tabhost实现

    本篇文章将详细讲解如何实现两种特殊的TabHost,一种是模仿网易新闻应用底部导航栏的实现方式。 首先,我们来了解基本的TabHost用法。TabHost通常由两个主要部分组成:TabWidget(选项卡)和FrameLayout(内容区域...

    Android 嵌套TabHost示例

    总结来说,Android的嵌套TabHost是一种增强用户界面的方法,它允许开发者创建更复杂的导航结构,提供类似网页的多级菜单体验。通过理解和实践这个示例,开发者可以更好地掌握Android TabHost的使用,以及如何在实际...

    TabHost+ViewPager实现滑动tabhost

    在Android开发中,TabHost和ViewPager是两种常用的组件,它们可以结合起来创建出具有滑动切换效果的界面。本文将深入探讨如何使用TabHost与ViewPager来实现这一功能,并提供相关的源码解析。 首先,TabHost是...

    类似新浪布局的两种不同实现方法(Fragment和TabHost)

    本教程将探讨两种不同的实现方法:使用`Fragment`和`TabHost`。这两种技术都是Android SDK提供的,用于构建复杂的用户界面,尤其是处理多个可切换的内容区域。 ### 1. Fragment 实现 `Fragment`是Android 3.0(API...

    底部tabhost嵌套顶不tabhost.

    顶部TabHost的实现方式与底部TabHost类似,但需要在底部TabHost已经创建的布局中添加一个新的TabHost组件,并为其配置相应的标签和内容视图。为了确保嵌套的TabHost不影响主TabHost的正常工作,我们需要正确处理事件...

    TabHost自定义样式 自定义TabWidget

    本篇文章将深入探讨如何自定义TabHost的样式,包括使用Activity对象作为内容和使用View对象作为内容两种方式。 首先,让我们了解TabHost的基本结构。TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是...

    TabHost和ViewPage源码

    在Android开发中,`TabHost`和`ViewPager`是两种常用的界面组件,它们用于构建具有多个标签页的应用界面。下面将详细介绍这两个组件的工作原理、使用方法以及如何将它们结合使用。 `TabHost`是Android SDK提供的一...

    安卓Android源码——ViewPager和Tabhost结合,可滑动的tabhost.rar

    在安卓开发中,`ViewPager` 和 `TabHost` 是两种常用的组件,它们分别用于实现页面滑动和标签导航。这个压缩包"安卓Android源码——ViewPager和Tabhost结合,可滑动的tabhost.rar"提供了将两者结合使用的示例代码,...

    tabhost使用方法

    在Android开发中,TabHost是实现标签...总的来说,TabHost提供了一种简单的方式来组织和切换应用的多个视图,虽然在新的Android设计指南中已被其他组件取代,但它的理解有助于开发者掌握Android界面设计的历史和发展。

    Android ViewPager和Tabhost结合,可滑动的tabhost-IT计算机-毕业设计.zip

    在Android开发中,ViewPager和TabHost是两种非常重要的组件,它们常常被用来构建用户界面,尤其是对于需要展示多个页面并且可以平滑切换的应用场景。在这个毕业设计的源码Demo中,我们将深入探讨如何将这两者结合,...

    TabHost的简单使用

    总结来说,TabHost是Android中构建多选项卡界面的一种方式,虽然现在有更现代的解决方案,但在理解Android历史和一些老项目中,掌握TabHost的使用仍然是必要的。通过TabHost和相关组件,开发者可以轻松地为用户提供...

    android TabHost 底部显示

    在Android开发中,TabHost是实现底部导航栏(Tab Bar)的一种传统方式,它允许用户在不同的内容区域之间切换,通常用于多视图的应用设计。本文将深入探讨如何使用TabHost来实现在Android应用底部显示选项卡的功能。 ...

    TabHost实现的分页

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有...总的来说,TabHost是Android早期实现多页面导航的一种方式,虽然现在有更多先进的解决方案,但它依然是理解Android UI设计和分页机制的一个重要知识点。

    Android TabHost控件讲解

    总结来说,Android的TabHost控件提供了一种方便的方式来构建多视图的应用界面。开发者可以通过设置标签和内容,以及自定义样式和事件处理,来实现丰富的用户体验。尽管在Android的现代设计中,TabLayout和ViewPager...

    tabhost布局

    在Android开发中,TabHost是一种常用的布局组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以展示不同的内容或活动。TabHost结合了TabWidget(用于显示选项卡)和FrameLayout(用于显示内容),使得开发者...

Global site tag (gtag.js) - Google Analytics