开源项目AndroidUtil-采用Fragment实现TabHost

分享到:

原文出自:方杰|http://fangjie.info/?p=141 转载请注明出处

学习Android也有一段时间了,感觉大部分的Android应用都有很多类似的组件,所以就打算做了这样一个开源项目,目的是整合一些Android开发常用的组件Demo,方便以后项目中直接拿来用。git地址:https://github.com/JayFang1993/AndroidUtil

废话不多说,首先讲第一个常用的组件TabHost的实现。之前我们可以通过继承TabActivity来实现,后来的API中已经不建议用这种方式了,所以今天我们主要讲的是用Fragment来实现Tabhost。
在新浪微博等很多APP中都有底部选项卡TabHost。首先看下实现后的效果。

一、TabHost的实现

Tabhost的每一个选项卡是通过RadioGroup实现的,每一个Tab就是一个RadioButton。页面除TabHost以外的内容区域是Fragment。下面是具体的布局文件main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="48dp" 
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:id="@+id/title"
        android:text="昌大软院"
        android:textSize="18dp"
        android:textColor="#a8aeb5"
        android:typeface="monospace"
        android:background="@drawable/title_bg" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Done"
        android:textColor="#a8aeb5"
        android:layout_marginTop="10dp"
        android:layout_marginRight="8dp"
        android:background="@drawable/done" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/back"
        android:textColor="#a8aeb5"
        android:text="Back"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="8dp"
        />

    <FrameLayout
         android:id="@+id/content"
         android:layout_below="@id/title"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"/> 

    <RadioGroup
        android:id="@+id/main_radio"
        android:layout_width="fill_parent"
        android:layout_height="48dp"
        android:layout_gravity="bottom"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:background="@drawable/tabhost_bg" >
        <RadioButton
            android:id="@+id/rb_home"
            android:drawableTop="@drawable/tab1"
            style="@style/tab"
            android:text="主页" />
        <RadioButton
            android:id="@+id/rb_at"
            style="@style/tab"            
            android:drawableTop="@drawable/tab2"
            android:text="收藏夹" />
        <RadioButton
            android:id="@+id/rb_mess"
            style="@style/tab"            
            android:drawableTop="@drawable/tab3"                 
            android:text="我" />
        <RadioButton
            android:id="@+id/rb_more"
            style="@style/tab"            
            android:drawableTop="@drawable/tab4"             
            android:text="更多" />                
    </RadioGroup>
</RelativeLayout>
昵    称:
验证码:

相关文档: