在一般常见的app中,常常会用到底部导航,而android默认的是顶部导航。目前的android版本中,已经不再推荐使用extends TabActivity的方式来创建tabhost,但作为比较常见的一种方式,还是在自己做项目的过程中总结一下。
需要注意的是,每个tabhost选项卡可能是由一个Intent启动的,此时每个选项卡对应一个Activity.废话不多说,帖代码!
Activity:
public class MainActivity extends ActivityGroup{ private TabHost tabHost; //资源文件 private Class[] activitys = {TabActivity_book.class, TabActivity_search.class, TabActivity_account.class}; private String[] titles = {"机票预订", "订单查询", "我的账号"}; private int[] images = {R.drawable.book, R.drawable.search, R.drawable.account}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化tab标签 tabHost = (TabHost) findViewById(R.id.mytabhost); tabHost.setup(this.getLocalActivityManager());//表明继承TabActivity,由于只能单继承,所以只好在这里写 //创建标签 for(int i=0; i<activitys.length; i++) { View view = View.inflate(this, R.layout.tab_layout, null); //设置imageView ImageView imageView = (ImageView) view.findViewById(R.id.image); // imageView.setImageDrawable(getResources().getDrawable(images[i])); //设置textView TextView textView = (TextView) view.findViewById(R.id.title); textView.setText(titles[i]); //设置跳转的Intent Intent intent = new Intent(this, activitys[i]); //设置TabSpec TabSpec spec = tabHost.newTabSpec(titles[i]).setIndicator(view).setContent(intent); tabHost.addTab(spec); } }
布局文件:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mytabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 需要一个布局管理器 --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 由于TabHost是继承于FrameLayout,所以需要一个FrameLaytout布局(内容页) ,id 必须为tabcontent --> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" > </FrameLayout> <!-- TabWidget必须标签,用来存放tab标签,且id必须为tabs --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/tab_widget_background" android:layout_alignParentBottom="true" > <!-- android:layout_alignParentBottom="true" --> </TabWidget> </RelativeLayout> </TabHost>
注意:
1. activity还能继承自TabHost,此时activity中获取tabhost的代码可这样写:tabHost = getTabHost(),但同时布局文件中tabhost的id必须使用系统自定义的Id:android:id="@android:id/tabhost"
2. 要使导航位于底部,FrameLaytout(内容页)必须放在TabWidget上面。
效果图:
相关推荐
本资源“安卓Android源码——TabHost内嵌ActivityGroup界面管理源码.zip”提供了一个实例,帮助开发者理解如何在TabHost中嵌入ActivityGroup来实现复杂的界面管理。 TabHost是Android SDK提供的一种用于创建多标签...
在Android开发中,TabHost和ActivityGroup是两个关键组件,常用于实现多页面的导航和界面管理。在本文中,我们将深入探讨如何使用TabHost内嵌ActivityGroup来创建复杂的用户界面,并通过源码分析理解其工作原理。 ...
本资源“Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip”提供了一种实现这种功能的方法,通过源码分析,我们可以深入了解这两者的用法。 1. **TabHost**: - TabHost是一个容器,可以用来展示...
在Android开发中,"ImageView 圆环旋转"和"仿微信底部TabHost+fragment"是两个常见的需求,这里我们将详细探讨这两个知识点。 首先,我们来看"ImageView 圆环旋转"。在Android应用中,有时我们需要实现一个图片在...
在Android应用开发中,微信作为一个极其流行的社交应用,其用户界面设计和交互方式往往成为开发者学习和模仿的对象。本文将详细介绍如何使用`FragmentTabHost`来实现一个仿微信首页的界面。`FragmentTabHost`是...
tabhost底部导航栏,真实可用。。。。。。。。。。。。。。
很长一段时间没有上传资源了,最近觉得微信的主界面滑动很好用,研究了下,秉着开源精神,这里把资源公布出来,供大家免费下载。 主要有 TabHost + Fragment 来实现。 当然,另一种实现方式是 ViewGroup + ViewPager...
在Android开发中,TabHost和ActivityGroup是两个重要的组件,它们用于实现复杂的界面布局和交互。TabHost主要用于创建带有标签页的应用界面,而ActivityGroup则允许你在同一个父Activity下管理多个子Activity,使得...
在Android开发中,`TabHost`和`ActivityGroup`是构建多 tab 界面的常见方式,尤其是在早期的Android版本中。这个主题主要是关于如何利用这两个组件创建一个具有多个功能区域的主界面。下面我们将详细探讨`TabHost`和...
在Android应用开发中,创建一个具有底部导航菜单的界面是一个常见的需求。`TabHost`是Android SDK提供的一种组件,用于实现这种多标签页的布局,它可以帮助开发者轻松地创建一个带有多个选项卡的应用界面,每个选项...
在Android开发中,TabHost是实现底部导航栏(Tab Bar)的一种传统方式,它允许用户在不同的内容区域之间切换,通常用于多视图的应用设计。本文将深入探讨如何使用TabHost来实现在Android应用底部显示选项卡的功能。 ...
- 界面设计:微信的TabHost通常包含底部的导航栏,每个按钮对应一个不同的功能模块,如“聊天”、“发现”、“通讯录”等。在实现时,需要为每个按钮创建对应的`Fragment`,并在`FragmentTabHost`中添加这些选项卡...
在Android开发中,TabHost和ActivityGroup是两个关键组件,它们常常被用来构建具有标签页切换功能的应用界面。本文将详细讲解如何将这两个组件结合使用,以实现多Activity间的高效跳转和堆栈管理。 首先,TabHost是...
在Android开发中,`TabHost`是一个非常重要的组件,它被用于实现底部导航栏的标签切换功能。`TabHost`提供了在多个小部件之间切换的能力,通常这些小部件是`Fragments`或`Activities`。在给定的场景中,"TabHost底部...
程序总体使用TabHost实现微信界面的四个模块,在每一个tab选项布局里使用自定义的ListView,添加ImageView和TextView控件,显示通讯录列表信息。自定义ListView的列表项布局文件,将每个ListView要显示的内容构成一个...
在Android开发中,TabHost是一种常用的组件,用于创建带有底部导航栏的应用界面。TabHost允许开发者将多个小部件(如Activity、View或者Intent)组织在一个TabWidget中,为用户提供直观的多视图切换功能。本篇文章将...
在Android应用开发中,微信是许多用户日常使用的社交软件,其底部的Tab栏设计非常典型,不仅提供了清晰的导航功能,还能展示未读消息数量,增强了用户体验。本教程将通过一个名为"WeiXinTabDemo"的项目,教你如何...
此种风格可以有很多种实现方式,其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,...
在Android开发中,"fragment仿微信tabhost"是一个常见的需求,主要是为了实现类似微信应用的主界面布局。在Android 3.0及以上版本,Google引入了Fragment的概念,它允许开发者在单个活动中创建多个可交互的视图区域...