注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

Tab的用法  

2015-04-22 19:27:13|  分类: 疯狂Android 讲义 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

TabHostActivity.java

public class TabHostActivity extends TabActivity {

    private TabHost tabHost;

    private Intent certificateIntent;

    private Intent feeIntent;

    private Intent scoreIntent;

    private Intent studyIntent;

    private Intent moreIntent;

 

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       tabHost = getTabHost();

       initIntent();

       addSpec();

    }

    /**

     * 初始化各个tab标签对应的intent

     */

    privatevoid initIntent() {

       studyIntent = new Intent(this, StudyActivity.class);

       scoreIntent = new Intent(this, ScoreActivity.class);

       feeIntent = new Intent(this, FeeActivity.class);

       certificateIntent = new Intent(this, CertificateActivity.class);

       moreIntent = new Intent(this, MoreActivity.class);

    }

    /**

     * tabHost添加各个标签项

     */

    privatevoid addSpec() {

      tabHost.addTab(this.buildTagSpec("tab_study",

R.string.study_progress,R.drawable.account01studyIntent));

    tabHost.addTab(this.buildTagSpec("tab_score",

R.string.test_score,R.drawable.account02scoreIntent));

        tabHost.addTab(this.buildTagSpec("tab_fee",

R.string.fee_pay,R.drawable.account03feeIntent));

       tabHost.addTab(this.buildTagSpec("tab_certificate", R.string.certificate_grant,R.drawable.accountcertificateIntent));

       tabHost.addTab(this.buildTagSpec("tab_more", R.string.more,

              R.drawable.account05moreIntent));

    }

    /**

     * 自定义创建标签项的方法

     * @param tagName 标签标识

     * @param tagLable 标签文字

     * @param icon  标签图标

     * @param content 标签对应的内容

     * @return

     */

    private TabHost.TabSpec buildTagSpec(String tagName, int tagLable,

           int icon, Intent content) {

       returntabHost

              .newTabSpec(tagName)

              .setIndicator(getResources().getString(tagLable),

                     getResources().getDrawable(icon)).setContent(content);

    }}

运行结果如下图所示

 

 

 

我们发现标签位置处于界面上方,但是我们看到的很多应用的标签都处于界面底部。

如下图所示

 

 

 

我们要实现这种效果只需要TabActivity的默认布局覆盖即可。新布局只需将标签和标签对应内容的相对位置调换一下就可以了,这里是用相对布局将标签对应内容的位置放到了标签的上方。不要改动id(会抛异常,提示必须要用指定的id)。不要忘了在onCreate()里设置新布局将TabActivity的默认布局覆盖。

    @Override

    publicvoid onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

setContentView(R.layout.tab);

       tabHost = getTabHost();

       initIntent();

       addSpec();

    }

tab.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- TabHost组件id值不可变-->

<TabHostxmlns:android=http://schemas.android.com/apk/res/android

    android:id="@android:id/tabhost"

    android:layout_height="fill_parent"

    android:layout_width="fill_parent">

   

    <RelativeLayout android:orientation="vertical"

       android:layout_width="fill_parent"

       android:layout_height="fill_parent">

      

       <!-- TabWidget组件id值不可变-->

       <TabWidget android:id="@android:id/tabs"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_alignParentBottom="true">

       </TabWidget>

      

       <!-- FrameLayout布局,id值不可变-->

       <FrameLayout android:id="@android:id/tabcontent"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

           android:layout_above="@android:id/tabs">

       </FrameLayout>

      

    </RelativeLayout>

</TabHost>

 

通常在项目中我们都会有一个自定义的Activity基类,我们会让所有的界面Activity去继承这个基类。但是要使用TabHost就要继承TabActivity,所以我们可以定义两个基类,一个是普通Activity界面的基类,另一个是包含TabHost界面的基类,让这个基类继承TabActivity即可。

 

写的不错,感觉很棒,理解
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017