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两种实现方式”探讨了如何在Android应用中使用TabHost来构建多标签视图。下面我们将深入讨论这两种实现方式及其相关知识点。 首先,我们要理解TabHost的基本概念。TabHost是一个容器,它能容纳一...
本篇文章将深入探讨TabHost的两种使用方式:XML布局和编程方式。 一、XML布局方式 1. 创建TabWidget:首先,在布局文件中创建一个TabWidget,它是TabHost中的标签视图。通过`android:id="@android:id/tabs"`来指定...
- 在Android 3.0及以上版本,Action Bar提供了一种新的Tab实现方式。虽然现在推荐使用ViewPager配合TabLayout,但了解Action Bar的Tab模式可以帮助理解TabHost的历史演变。 7. **使用第三方库**: - 如`androidx....
TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而FrameLayout则用来展示被选中选项卡的内容。通过TabSpec对象,我们可以设置每个选项卡的标签和关联的Activity或布局。 ```xml ...
本篇文章将详细讲解如何实现两种特殊的TabHost,一种是模仿网易新闻应用底部导航栏的实现方式。 首先,我们来了解基本的TabHost用法。TabHost通常由两个主要部分组成:TabWidget(选项卡)和FrameLayout(内容区域...
总结来说,Android的嵌套TabHost是一种增强用户界面的方法,它允许开发者创建更复杂的导航结构,提供类似网页的多级菜单体验。通过理解和实践这个示例,开发者可以更好地掌握Android TabHost的使用,以及如何在实际...
在Android开发中,TabHost和ViewPager是两种常用的组件,它们可以结合起来创建出具有滑动切换效果的界面。本文将深入探讨如何使用TabHost与ViewPager来实现这一功能,并提供相关的源码解析。 首先,TabHost是...
本教程将探讨两种不同的实现方法:使用`Fragment`和`TabHost`。这两种技术都是Android SDK提供的,用于构建复杂的用户界面,尤其是处理多个可切换的内容区域。 ### 1. Fragment 实现 `Fragment`是Android 3.0(API...
顶部TabHost的实现方式与底部TabHost类似,但需要在底部TabHost已经创建的布局中添加一个新的TabHost组件,并为其配置相应的标签和内容视图。为了确保嵌套的TabHost不影响主TabHost的正常工作,我们需要正确处理事件...
本篇文章将深入探讨如何自定义TabHost的样式,包括使用Activity对象作为内容和使用View对象作为内容两种方式。 首先,让我们了解TabHost的基本结构。TabHost通常由两部分组成:TabWidget和FrameLayout。TabWidget是...
在Android开发中,`TabHost`和`ViewPager`是两种常用的界面组件,它们用于构建具有多个标签页的应用界面。下面将详细介绍这两个组件的工作原理、使用方法以及如何将它们结合使用。 `TabHost`是Android SDK提供的一...
在安卓开发中,`ViewPager` 和 `TabHost` 是两种常用的组件,它们分别用于实现页面滑动和标签导航。这个压缩包"安卓Android源码——ViewPager和Tabhost结合,可滑动的tabhost.rar"提供了将两者结合使用的示例代码,...
在Android开发中,TabHost是实现标签...总的来说,TabHost提供了一种简单的方式来组织和切换应用的多个视图,虽然在新的Android设计指南中已被其他组件取代,但它的理解有助于开发者掌握Android界面设计的历史和发展。
在Android开发中,ViewPager和TabHost是两种非常重要的组件,它们常常被用来构建用户界面,尤其是对于需要展示多个页面并且可以平滑切换的应用场景。在这个毕业设计的源码Demo中,我们将深入探讨如何将这两者结合,...
总结来说,TabHost是Android中构建多选项卡界面的一种方式,虽然现在有更现代的解决方案,但在理解Android历史和一些老项目中,掌握TabHost的使用仍然是必要的。通过TabHost和相关组件,开发者可以轻松地为用户提供...
在Android开发中,TabHost是实现底部导航栏(Tab Bar)的一种传统方式,它允许用户在不同的内容区域之间切换,通常用于多视图的应用设计。本文将深入探讨如何使用TabHost来实现在Android应用底部显示选项卡的功能。 ...
在Android开发中,TabHost是一个非常重要的组件,用于创建具有...总的来说,TabHost是Android早期实现多页面导航的一种方式,虽然现在有更多先进的解决方案,但它依然是理解Android UI设计和分页机制的一个重要知识点。
总结来说,Android的TabHost控件提供了一种方便的方式来构建多视图的应用界面。开发者可以通过设置标签和内容,以及自定义样式和事件处理,来实现丰富的用户体验。尽管在Android的现代设计中,TabLayout和ViewPager...
在Android开发中,TabHost是一种常用的布局组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以展示不同的内容或活动。TabHost结合了TabWidget(用于显示选项卡)和FrameLayout(用于显示内容),使得开发者...