732003684

导航

几种tabhost的总结(1)

一,利用tabwidget切换的

效果如图

一。布局 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"
    android:orientation="vertical"
    android:background="@android:color/white" >

    <TabHost android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_marginTop="2dip">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
       <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.0"
            android:background="@drawable/bg_tab" 
            android:paddingLeft="15dip"
            android:paddingRight="15dip"
            android:paddingBottom="2dip"/>

    <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:gravity="center"
            android:fadingEdge="none"></FrameLayout>
          
       
    </LinearLayout>

</TabHost>

</LinearLayout>

二。MainActivity

package com.ct.tab;

import java.util.ArrayList;
import java.util.List;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabWidget;

public class MainActivity extends TabActivity implements
    OnTabChangeListener {
    /** Called when the activity is first created. */
    /**
     * 主界面的tabhost
     */
    private TabHost mTabHost;

    /**
     * tab页的TabWidget
     */
    private TabWidget mTabWidget;

    /**
     * 用来保存菜单中子view的容器
     */
    List<View> list = new ArrayList<View>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initView();
    }
    
    private void initView(){
        mTabHost = (TabHost) findViewById(android.R.id.tabhost);
        mTabWidget = (TabWidget) findViewById(android.R.id.tabs);
        mTabHost.setOnTabChangedListener(this);
        setIndicators();
    }
    
    private void setIndicators(){
        //好友列表
        setIndicator(R.drawable.icon_buddy_on, 0, new Intent(
                this, BuddyListActivity.class));
        
        //
        setIndicator(R.drawable.icon_group, 1, new Intent(this,
                GroupChatActivity.class));
        //最近会话
        setIndicator(R.drawable.icon_recent, 2, new Intent(this,
                RecentTalkActivity.class));

        //消息推送
        setIndicator(R.drawable.icon_new, 3, new Intent(this,
                NewFuncActivity.class));
    }
    
    private void setIndicator(int icon,int tabId,Intent intent){
        ImageButton imageButton = new ImageButton(this.mTabHost.getContext());
        imageButton.setImageResource(icon);
        if(tabId == 0){
            imageButton.setBackgroundResource(R.drawable.bg_selected);
        }else {
            imageButton.setBackgroundResource(0);
        }
        String str = String.valueOf(tabId);
        TabHost.TabSpec localTabSpec = mTabHost.newTabSpec(str).setIndicator(
                imageButton).setContent(intent);
        
        //加载tabSpec
        mTabHost.addTab(localTabSpec);
        //保存tab菜单中子菜单
        list.add(imageButton);
    }

    @Override
    public void onTabChanged(String tabId) {
        // TODO Auto-generated method stub
int tabID = Integer.valueOf(tabId);
        
        // TODO Auto-generated method stub
        
        for (int i = 0; i < mTabWidget.getChildCount(); i++)
        {
            if (i == tabID)
            {
                Log.i("", "" + mTabWidget.getChildAt(Integer.valueOf(i)));
                
                if (list.size() != 0)
                {
                    if (i == 0)
                    {
                        
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_buddy_on);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected);
                    }
                    else if (i == 1)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_group_on);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected);
                    }
                    else if (i == 2)
                    {
                        
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_recent_on);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected);

                    }
                    else if (i == 3)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_new_on);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected);

                    }

                }

            }
            else
            {

                mTabWidget.getChildAt(Integer.valueOf(i))
                        .setBackgroundDrawable(null);
                if (list.size() != 0)
                {
                    if (i == 0 && i != tabID)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_buddy);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(0);
                    }
                    else if (i == 1 && i != tabID)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_group);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(0);
                    }
                    else if (i == 2 && i != tabID)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_recent);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(0);
                    }

                    else if (i == 3 && i != tabID)
                    {
                        ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_new);
                        
                        ((ImageButton)list.get(i)).setBackgroundResource(0);
                    }

                }
            }

        }
    }
}

 (在F:\java\MyTabHost1)

 

posted on 2013-01-07 11:51  732003684  阅读(276)  评论(0编辑  收藏  举报