Android TabHost 的美化与设计

用到的布局xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<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">
      <FrameLayout
         android:id="@android:id/tabcontent"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_weight="1">
      </FrameLayout>
      <TabWidget
         android:id="@android:id/tabs"
         android:layout_width="fill_parent"
         android:layout_alignParentBottom="true"
         android:layout_height="wrap_content"/>
    </LinearLayout>
</TabHost>

Activity 中抒写的代码:

//记得先定义这几个变量
private TabHost tabHost;
private TabWidget tabWidget;
Field mBottomLeftStrip;
Field mBottomRightStrip;

public TabHost makeTab(){
        if(this.tabHost == null){
                tabHost = (TabHost)findViewById(android.R.id.tabhost);
                tabWidget = (TabWidget)findViewById(android.R.id.tabs);
                tabHost.setup();
                tabHost.bringToFront();

                TabSpec nearby_tab = tabHost.newTabSpec("nearby_tab");
                TabSpec history_tab = tabHost.newTabSpec("history_tab");
                TabSpec about_tab = tabHost.newTabSpec("about_tab");

                nearby_tab.setIndicator("first",getResources().getDrawable(R.drawable.first)).setContent(new Intent(this,first.class));
                history_tab.setIndicator("second",getResources().getDrawable(R.drawable.second)).setContent(new Intent(this,second.class));
                about_tab.setIndicator("third",getResources().getDrawable(R.drawable.third)).setContent(new Intent(this,third.class));

                tabHost.addTab(nearby_tab);
                tabHost.addTab(history_tab);
                tabHost.addTab(about_tab);

                if (Integer.valueOf(Build.VERSION.SDK) <= 7) {
                        try {
                                mBottomLeftStrip = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip");
                                mBottomRightStrip = tabWidget.getClass().getDeclaredField ("mBottomRightStrip");
                                if(!mBottomLeftStrip.isAccessible()) {
                                        mBottomLeftStrip.setAccessible(true);
                                }
                                if(!mBottomRightStrip.isAccessible()){
                                        mBottomRightStrip.setAccessible(true);
                                }
                                mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee));
                                mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee));

                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                } else {
                        try {
                                mBottomLeftStrip = tabWidget.getClass().getDeclaredField("mLeftStrip");
                                mBottomRightStrip = tabWidget.getClass().getDeclaredField("mRightStrip");
                                if (!mBottomLeftStrip.isAccessible()) {
                                        mBottomLeftStrip.setAccessible(true);
                                }
                                if (!mBottomRightStrip.isAccessible()) {
                                        mBottomRightStrip.setAccessible(true);
                                }
                                mBottomLeftStrip.set(tabWidget, getResources().getDrawable(R.drawable.linee));
                                mBottomRightStrip.set(tabWidget, getResources().getDrawable(R.drawable.linee));
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }

                for (int i =0; i <tabWidget.getChildCount(); i++) {

                        final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
                        tv.setTextColor(Color.WHITE);
                        View vvv = tabWidget.getChildAt(i);
                        if(tabHost.getCurrentTab()==i){
                                vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.focus));
                        }
                        else {
                                vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.unfocus));
                        }
                }

                tabHost.setOnTabChangedListener(new OnTabChangeListener(){

                        @Override
                        public void onTabChanged(String tabId) {
                        // TODO Auto-generated method stub
                        for (int i =0; i < tabWidget.getChildCount(); i++) {
                                View vvv = tabWidget.getChildAt(i);
                                if(tabHost.getCurrentTab()==i){
                                        vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.focus));
                                }
                                else {
                                        vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.unfocus));
                                }
                        }
                        }
                });
        }
        else{
                return tabHost;
        }
        return null;
}

<ignore_js_op> TestTab.zip (107.97 KB, 下载次数: 778)

Android TabHost 的美化与设计

时间: 2024-11-05 11:45:06

Android TabHost 的美化与设计的相关文章

Android之TabHost组件美化

先看效果图: 1.main.xml文件代码: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent"

Android -- TabHost、Fragment、状态保存、通信

工程结构                                                                                       TabAFm到TabEFm都是Fragment,并且每个Fragment对应一个布局文件. TabAFm.java                                                                             package com.yydcdut.tabho

Android ——TabHost使用

在Android中,通常可以使用切换卡(选项卡)实现切换显示不同页面内容的功能.这一功能可以通过TabHost控件来实现. 下面我们就通过一个简单的实例演示如何使用TabHost控件完成切换卡功能,完成后的运行效果如图1所示. 图1 主页显示效果 可以看出,在该实例中,总共设置了四个TabHost标签,分别为主页.时间.联系人和搜索.在点击这些标签时,便可以完成相应页面内容的显示. 1.界面布局 TabHost是整个Tab的容器,是由TabWidget和FrameLayout 两部分组成的.其中

【原创】android——Tabhost 自定义tab+底部实现+intent切换内容

1,实现tabhost自定义格式,再此仅仅显示背景和文字,效果图预览:(底边栏所示) (图片变形) 2,xml配置 activity_user的XML配置  1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabhost&qu

Android——Login用户登陆的设计实现

我们生活中会遇到各种各样的登录界面,需要输入你的账号和密码,像登陆QQ呀,各种软件都需要这种设计,那我们今天来实现一下吧~~ 首先,界面的设计如下: 可以看出,我们需要两个可编辑文本框,用来输入用户名和密码,同时,我们要提示出要输入的类型,用hint来提示:我们需要一个checkbox来判断我们是否选择保存密码,还需要一个登陆button:由于整个线性布局是垂直的,因此两个可编辑文本框,一个checkbox,一个button在垂直方向上依次排列,这样不是很美观,因此我们需要再建立一个相对布局,使

Android TabHost(简易用法)

前言 欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 Tab应用的结构 TabHost的Activity的结构如下: <?xml version="1.0" encoding="utf-8"?> <!-- 定义TabHost组件 --> <LinearLayout

Android存储系统的架构与设计

一.概述 本文讲述Android存储系统的架构与设计,基于Android 6.0的源码,涉及到最为核心的便是MountService和Vold这两个模块以及之间的交互.为了缩减篇幅,只展示部分核心代码. MountService:Android Binder服务端,运行在system_server进程,用于跟Vold进行消息通信,比如MountService向Vold发送挂载SD卡的命令,或者接收到来自Vold的外设热插拔事件.MountService作为Binder服务端,那么相应的Binde

Android游戏之输入类设计(传感器,键盘,触摸点)

Android游戏之输入类设计(传感器,键盘,触摸点) 1.基础知识: A. SensorEventListener传感器事件监听 http://developer.android.com/reference/android/hardware/SensorEventListener.html Class Overview--------------------------------------------------------------------------------Used for

Android游戏之音频类设计

Android游戏之音频类设计 1.基础知识: A. setVolumeControlStream(AudioManager.STREAM_MUSIC);http://developer.android.com/training/managing-audio/volume-playback.htmlhttp://developer.android.com/reference/android/app/Activity.html#setVolumeControlStream(int) public