Android之TabHost的几种使用方法

1,Activity要继承TabActivity,使用LayoutInflater方式来初始化布局文件。

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/tab01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/tv01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24dip" android:text="这是选项卡一,你课可以在这里添加你要显示的控件" /> </LinearLayout> <LinearLayout android:id="@+id/tab02" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/tv02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24dip" android:text="这是选项卡二,你课可以在这里添加你要显示的控件" /> </LinearLayout> <LinearLayout android:id="@+id/tab03" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/tv03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24dip" android:text="这是选项卡三,你课可以在这里添加你要显示的控件" /> </LinearLayout> </LinearLayout>

TabHostActivity.java

package com.test; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; public class TabHostActivity extends TabActivity { /** Called when the activity is first created. */ 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("选项卡一").setIndicator("选项卡一", getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab01)); myTabHost.addTab(myTabHost.newTabSpec("选项卡二").setIndicator("选项卡二", getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab02)); myTabHost.addTab(myTabHost.newTabSpec("选项卡三").setIndicator("选项卡三", getResources().getDrawable(R.drawable.icon)).setContent(R.id.tab03)); } }


2,同样继承TabActivity,但是选项卡的内容则是跳转到不同的activity。

mian.xml

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" 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"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp" /> </LinearLayout> </TabHost>

注意:tabhost中的id,tabwidget的id以及framelayout的id

TabHostActivity.java

package com.test; import android.app.TabActivity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.widget.TabHost; public class TabHostActivity extends TabActivity { /** Called when the activity is first created. */ TabHost myTabHost ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //得到TabHost对象,正对TabActivity的操作通常都有这个对象完成 TabHost tabHost = getTabHost(); //生成一个Intent对象,该对象指向一个Activity Intent activity1Intent = new Intent(); activity1Intent.setClass(this, Activity1.class); //生成一个TabSpec对象,这个对象代表了一个页 TabHost.TabSpec activity1Spec = tabHost.newTabSpec("选项卡一"); Resources res = getResources(); //设置该页的indicator , 这里使用了系统自动的图片资源 activity1Spec.setIndicator("选项卡一", res.getDrawable(android.R.drawable.stat_sys_download)); //设置该页的内容 activity1Spec.setContent(activity1Intent); //将设置好的TabSpec对象添加到TabHost当中 tabHost.addTab(activity1Spec); Intent activity2Intent = new Intent(); activity2Intent.setClass(this, Activity2.class); TabHost.TabSpec activity2Spec = tabHost.newTabSpec("选项卡二"); activity2Spec.setIndicator("选项卡二", res.getDrawable(android.R.drawable.stat_sys_upload)); activity2Spec.setContent(activity2Intent); tabHost.addTab(activity2Spec); } }

注意:选项卡中的两个activity的代码就不贴上了。


3,不继承TabActivity。

main.xml

<?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="这里是选项卡一"/> <TextView android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="这里是选项卡二"/> <TextView android:id="@+id/view3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="这里是选项卡三"/> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout>


TabHostActivity.java

package com.test; import android.app.Activity; import android.os.Bundle; import android.widget.TabHost; public class TabHostActivity extends Activity { /** Called when the activity is first created. */ TabHost myTabHost ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(); tabHost.addTab(tabHost .newTabSpec("选项二") .setIndicator("选项二", getResources().getDrawable(R.drawable.icon)) .setContent(R.id.view1)); tabHost.addTab(tabHost .newTabSpec("选项二") .setIndicator("选项二", getResources().getDrawable(R.drawable.icon)) .setContent(R.id.view2)); tabHost.addTab(tabHost .newTabSpec("选项三") .setIndicator("选项三", getResources().getDrawable(R.drawable.icon)) .setContent(R.id.view3)); } }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TabHostAndroid 中的一个容器,用于实现多个标签页之间的切换。下面是 TabHost使用方法详解: 1. 在 XML 布局文件中添加 TabHost 控件: ```xml <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </TabHost> ``` 2. 在 Activity 中初始化 TabHost: ```java TabHost tabHost = findViewById(android.R.id.tabhost); tabHost.setup(); ``` 3. 添加标签页: ```java TabHost.TabSpec tabSpec1 = tabHost.newTabSpec("Tab1"); tabSpec1.setIndicator("Tab 1"); tabSpec1.setContent(R.id.tab1_content); TabHost.TabSpec tabSpec2 = tabHost.newTabSpec("Tab2"); tabSpec2.setIndicator("Tab 2"); tabSpec2.setContent(R.id.tab2_content); tabHost.addTab(tabSpec1); tabHost.addTab(tabSpec2); ``` 4. 创建标签页的布局: 在布局文件中创建用于显示每个标签页内容的 View,例如: ```xml <LinearLayout android:id="@+id/tab1_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 在这里添加 Tab 1 的内容 --> </LinearLayout> <LinearLayout android:id="@+id/tab2_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 在这里添加 Tab 2 的内容 --> </LinearLayout> ``` 以上就是 TabHost 的基本使用方法。通过添加不同的标签页和对应的布局,可以实现多个标签页之间的切换和显示不同的内容。你可以根据自己的需求来定制标签页的样式和内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值