使用TabHost实现类网易新闻-底部固定菜单栏

Activity代码:

package com.jay.test;


import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageButton;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;

public class BottmoMenuBarActivity extends Activity {
    private TabHost tabs;
        private ImageButton footer_tab_btn1;
        private ImageButton footer_tab_btn2;
        private ImageButton footer_tab_btn3;
        private ImageButton footer_tab_btn4;
        private ImageButton footer_tab_btn5;
        private ImageButton footer_tab_btn6;
        private ImageButton footer_tab_btn7;

        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tabs = null;
                tabs = (TabHost)findViewById(R.id.tabhost);
                tabs.setup();
        tabs.setOnTabChangedListener(TabChangeListener);
        //设置Tab1
        footer_tab_btn1 = new ImageButton(this);
        footer_tab_btn1.setBackgroundResource(R.drawable.bottom_home_button);
        TabSpec tab1 = tabs.newTabSpec("home");  
        tab1.setIndicator(footer_tab_btn1);      // 设置tab1的名称
        tab1.setContent(R.id.text1);    // 关联控件  
        tabs.addTab(tab1);                // 添加tab1  
        
          
        //设置Tab2
        footer_tab_btn2 = new ImageButton(this);
        footer_tab_btn2.setBackgroundResource(R.drawable.bottom_book_button);
        TabSpec tab2 = tabs.newTabSpec("book");  
        tab2.setIndicator(footer_tab_btn2);  
        tab2.setContent(R.id.text2);    
        tabs.addTab(tab2);                
        
        //设置Tab3  
        footer_tab_btn3 = new ImageButton(this);
        footer_tab_btn3.setBackgroundResource(R.drawable.bottom_video_button);
        TabSpec tab3 = tabs.newTabSpec("video");  
        tab3.setIndicator(footer_tab_btn3);        
        tab3.setContent(R.id.text3);   
        tabs.addTab(tab3);                

        //设置Tab4  
        footer_tab_btn4 = new ImageButton(this);
        footer_tab_btn4.setBackgroundResource(R.drawable.bottom_magazine_button);
        TabSpec tab4 = tabs.newTabSpec("magazine");  
        tab4.setIndicator(footer_tab_btn4);        
        tab4.setContent(R.id.text4);     
        tabs.addTab(tab4);    
        
        // 设置Tab5
        footer_tab_btn5 = new ImageButton(this);
        footer_tab_btn5.setBackgroundResource(R.drawable.bottom_paper_button);
        TabSpec tab5 = tabs.newTabSpec("paper");  
        tab5.setIndicator(footer_tab_btn5);        
        tab5.setContent(R.id.text5);     
        tabs.addTab(tab5);    
        
        // 设置Tab6
        footer_tab_btn6 = new ImageButton(this);
        footer_tab_btn6.setBackgroundResource(R.drawable.bottom_thesis_button);
        TabSpec tab6 = tabs.newTabSpec("thesis");  
        tab6.setIndicator(footer_tab_btn6);        
        tab6.setContent(R.id.text6);     
        tabs.addTab(tab6);    
        
        // 设置Tab7
        footer_tab_btn7 = new ImageButton(this);
        footer_tab_btn7.setBackgroundResource(R.drawable.bottom_library_button);
        TabSpec tab7 = tabs.newTabSpec("library");  
        tab7.setIndicator(footer_tab_btn7);        
        tab7.setContent(R.id.text7);       
        tabs.addTab(tab7);    
    }
    private OnTabChangeListener TabChangeListener  = new OnTabChangeListener() {
                
                @Override
                public void onTabChanged(String tabId) {
                        int j = tabs.getTabWidget().getTabCount();
                        ImageButton currentView =(ImageButton) tabs.getCurrentTabView(); 
                        for (int i = 0; i < j ; i++){
                                if(tabs.getCurrentTab() == i){
                                        currentView.setEnabled(false);
                                }else{
                                        if(tabs.getTabWidget().getChildTabViewAt(i) != null){
                                                ((ImageButton)tabs.getTabWidget().getChildTabViewAt(i)).setEnabled(true);
                                        }
                                }
                        }
                }
        };;
}

一些注意点:
1.没有使用TabActivity,这是在3.0中不建议使用的。
2.setContent()函数除了直接添加视图ID,还可以添加intent直接在Tab的内容部分打开一个activity。如需要了解详细实现过程可自行搜索,也可以发邮件至我的邮箱 jayzhou215@163.com
3.重载 onTabChanged(String tabId)  函数的目的是实现按下面按钮时变蓝的效果,具体请查看源码
4.之所以菜单栏会在底部显示是在TabHost和TabWidget之间加了一层RelativeLayout,将TabWidget设置为alignParentBottom即可。
main.xml源码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <TabHost 
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/tabhost"
            tools:ignore="UselessParent" >
            <RelativeLayout
                        android:layout_width="fill_parent"
                        android:layout_height="match_parent"
                        >
                    <TabWidget
                        android:id="@android:id/tabs"
                        android:layout_width="fill_parent"
                        android:layout_height="50dp"
                        android:layout_alignParentBottom="true"
                        >
                    </TabWidget>
                
                    <FrameLayout
                        android:id="@android:id/tabcontent"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                                 android:layout_above="@android:id/tabs"
                        >
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text1"
                                android:id="@+id/text1"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text2"
                                android:id="@+id/text2"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text3"
                                android:id="@+id/text3"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text4"
                                android:id="@+id/text4"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text5"
                                android:id="@+id/text5"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text6"
                                android:id="@+id/text6"
                            />
                        <TextView 
                                android:layout_width="fill_parent"
                                android:layout_height="fill_parent"
                                android:text="@string/text7"
                                android:id="@+id/text7"
                            />
                    </FrameLayout>
                </RelativeLayout>
        </TabHost>
</RelativeLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值