Android:TabHost学习

本文介绍了Android中已废弃的TabHost组件,用于展示多个标签页,但现在被Fragment替代。尽管如此,学习TabHost有助于理解Android UI设计。文章详细阐述了TabHost的结构、重要方法、以及三种实现方式:继承TabActivity、直接使用Activity和手动加载XML。还讨论了TabHost的缺点,如违反Activity单一窗口原则和Back键行为问题。
摘要由CSDN通过智能技术生成

前言

TabHost是用来在一个界面显示多个标签的组件,现在已经被Fragment代替,原因是可扩展性非常差,并且需要依赖ActivityGroup。现在对它进行学习是为了学习它构建界面的特点,更好的理解Android的UI。

TabHost组件在安卓4.0之后已经被废弃了,建议使用Fragment组件来代替它。由于其设计违反了Activity单一窗口原则,它可以同时加载多个Activity,然后再它们之间进行来回切换;另外有个很致命的问题就是当点击别的选项时,按下Back后退键,它会使整个应用程序都退出,而不是切换到前一个选项卡,虽然可以在主程序里覆写OnKeyDown这个方法,但这样就会导致每一次按下Back后退键都只能回到第一个选项菜单。

一:TabHost 简介

作用:TabHost可以很方便的在窗口上放置多个标签页,每个标签页相当于获得一个与外部容器相同大小的组件拜放区域。通过这种方式就可以在一个容器里放置更多组件。

结构:TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的标签,FrameLayout是Tab内容。
与TabHost结合使用的有如下两个组件:
TabWidget:代表选项卡的标题条
TabSpec:代表选项卡的一个Tab页面

重要方法

TabHost仅仅是一个容器,可以使用下面的方法来创建,添加标签页。
newTabSpec(String tag):创建选项卡
addTab(TabHost.TabSpec tabSpec):添加选项卡

实现TabHost的方式

  • 直接让一个Activity继承TabActivity
  • 定义xml布局文件,利用findViewById()获得TabHost组件,通过setup()方法实例化并进行配置

需要注意的地方:

  • TabHost的布局根元素设置为TabHost
  • 需要有TabWidget和FrameLayout
  • 三个id必须要设置对,否则会报错Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
    • TabHost的id必须为@android:id/tabhost
    • TabWidget的id必须为@android:id/tabs
    • FrameLayout的id必须@android:id/tabcontent

二:示例代码

方法一:继承TabActivity

<?xml version="1.0" encoding="utf-8"?>
<TabHost
    android:id="@android:id/tabhost"
    xmlns:android="http://schemas.android.com/apk/res/android"
    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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值