Android TabHost的使用

本文介绍如何使用Android的TabHost组件来实现应用内的分页功能。通过两种方式创建TabHost:一种是在Java代码中直接定义;另一种是结合XML布局文件进行配置。文中详细展示了具体的代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android的TabHost是一个很好的分页的控件

能够把自己的程序的多个activity组织起来

这里面联系到的概念有ActivityGroup

TabActivity

使用TabHost构建程序有两种方法

一种是在java代码里,一种是在xml代码里

一种方法是在java里直接写

private TabHost mtabHost; mtabHost = getTabHost(); mtabHost.addTab(mtabHost.newTabSpec("tab1") .setIndicator(getString(R.string.tabs_1_tab_1), getResources().getDrawable(R.drawable.undo)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab2") .setIndicator(getString(R.string.tabs_1_tab_2),getResources().getDrawable(R.drawable.undo)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab3") .setIndicator(getString(R.string.tabs_1_tab_3),getResources().getDrawable(R.drawable.undo)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab4") .setIndicator(getString(R.string.tabs_1_tab_4),getResources().getDrawable(R.drawable.undo)) .setContent(new Intent(this, inviteTab.class))); mtabHost.addTab(mtabHost.newTabSpec("tab5") .setIndicator(getString(R.string.tabs_1_tab_5),getResources().getDrawable(R.drawable.tab_set)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab6") .setIndicator(getString(R.string.tabs_1_tab_6),getResources().getDrawable(R.drawable.undo)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab7") .setIndicator(getString(R.string.tabs_1_tab_7),getResources().getDrawable(R.drawable.tab_help)) .setContent(this)); mtabHost.addTab(mtabHost.newTabSpec("tab8") .setIndicator(getString(R.string.tabs_1_tab_8),getResources().getDrawable(R.drawable.tab_help)) .setContent(this)); mtabHost.setOnTabChangedListener( this);

然后需要重载两个函数

public void onTabChanged(String tagString) { // TODO Auto-generated method stub } @Override public View createTabContent(String arg0) { final TextView tv = new TextView(this); tv.setText("Content for tab with tag " + arg0); return tv; }

这样就可以实现一个初步的TabHost

另外一种方法

还可以在xml文件里画TabHost界面

比如最近我做一个项目,就遇到需要把TabHost放在屏幕下方

代码如下

这是main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabHost android:id="@+id/edit_item_tab_host" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5dp" android:layout_weight="1" /> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" /> </LinearLayout> </TabHost> </LinearLayout>

主文件里

public static TabHost tab_host; setContentView(R.layout.main); tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); tab_host.setup(this.getLocalActivityManager()); TabSpec ts1 = tab_host.newTabSpec("TAB_1"); ts1.setIndicator(getString(R.string.a),getResources().getDrawable(R.drawable.a)); ts1.setContent(new Intent(this, a.class)); tab_host.addTab(ts1); TabSpec ts2 = tab_host.newTabSpec("TAB_2"); ts2.setIndicator(getString(R.string.b),getResources().getDrawable(R.drawable.b)); ts2.setContent(new Intent(this, b.class)); tab_host.addTab(ts2); TabSpec ts3 = tab_host.newTabSpec("TAB_3"); ts3.setIndicator(getString(R.string.c),getResources().getDrawable(R.drawable.c)); ts3.setContent(new Intent(this, c.class)); tab_host.addTab(ts3); TabSpec ts4 = tab_host.newTabSpec("TAB_4"); ts4.setIndicator(getString(R.string.d),getResources().getDrawable(R.drawable.d)); ts4.setContent(new Intent(this, d.class)); tab_host.addTab(ts4); tab_host.setCurrentTab(0); tab_host.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub });

这样就可以构建出一个很好的TabHost的界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值